【问题标题】:Calling an action with parameter .Net Core使用参数 .Net Core 调用操作
【发布时间】:2021-04-12 18:31:30
【问题描述】:

我有一个MyMessages 模型,我在用户登录时将数据放入其中。它包含所有需要的数据。 对于他们收到的每条消息,我都会在视图中执行以下操作

                    for (int i = 0; i < Model.MyMessagesCount; i++)
                    {
                       <li class="list-group-item d-flex align-items-center mt-2">
                           <a>@Model.MessagesTitles[i]</a>
                           

                       </li> 

当用户单击每个&lt;a&gt; 时,我想在我将MessageID 传递给的单独视图中更详细地向他们显示该消息。 我怎样才能做到这一点?如何让所有&lt;a&gt; 调用相同的操作,但使用不同的MessageID 作为参数? (类似/User/Usermessages?MessageID=20

【问题讨论】:

    标签: asp.net asp.net-core .net-core asp.net-core-mvc


    【解决方案1】:

    你可以使用锚标签助手

    <li>
        <a asp-controller="user" 
            asp-action="messages" 
            asp-area="" 
            asp-route-messageId="@Model.MessagesTitles[i].MessageId">
            @Model.MessagesTitles[i]
        </a>
    </li>
    

    asp-route-{parameter}:参数里面就是你在action中定义的参数的名字。

    您可以在https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/anchor-tag-helper?view=aspnetcore-5.0上阅读更多内容

    【讨论】:

      【解决方案2】:

      在Index.cshtml页面中,可以直接设置a标签href属性。

      代码示例如下:

          public IActionResult Index()
          {
              List<MyMessages> messages = new List<MyMessages>()
              {
                  new MyMessages(){ MessageId=1001, MessageTitile="AA"},
                  new MyMessages(){MessageId =1002, MessageTitile="BB"},
                  new MyMessages(){MessageId=1003, MessageTitile="CC"} 
              };
              return View(messages);
          }
      
          public IActionResult Details(int messageId)
          {
              return View();
          }
      

      Index.cshtml 页面:

          @model List<SignalRChatSample.Models.MyMessages>
      
          <ul>
              @for (int i = 0; i < Model.Count(); i++)
              {
                  <li class="list-group-item d-flex align-items-center mt-2">
                      <a href="/Home/Details?messageId=@Model[i].MessageId.ToString()">@Model[i].MessageTitile</a> 
                  </li>
              }
          </ul>
      

      然后,结果是这样的(网址:Https://localhost:5001/Home/Details?messageId=1002):

      此外,正如大卫所说,您还可以通过路由发送参数。

      【讨论】:

        猜你喜欢
        • 2019-10-28
        • 2021-12-09
        • 2019-05-06
        • 1970-01-01
        • 2018-04-18
        • 2019-04-23
        • 2023-03-17
        • 2017-10-21
        • 2019-03-09
        相关资源
        最近更新 更多