【问题标题】:How to set route parameter in asp.net core如何在asp.net core中设置路由参数
【发布时间】:2021-06-10 02:18:28
【问题描述】:

我有这个视图方法需要 2 个参数

[Route("chatbot/{chatbotId}/intents/{intentId}")]
public IActionResult Intents(int chatbotId, int intentId)
{
    return View();
}

问题是如何将参数从 ASP.NET Core 核心传递给它?

<a class="nav-link text-dark" asp-area="" 
      asp-controller="Chatbot" asp-action="Intents">Intents</a>

【问题讨论】:

  • asp-route-chatbotId="..." 等?
  • WOOOOOOOOOOOOOOOOT.... 这太棒了,我不知道我可以简单地做到这一点。哇,谢谢你,我真的不知道你可以建立这样的论点。但是,是的,这绝对是我想要的,谢谢。如果您想回答它,我会将其标记为答案。

标签: c# asp.net asp.net-core routes


【解决方案1】:

您也可以使用“asp-all-route-data”。所以你可以像下面这样命名你的路线:

[Route("chatbot/intents/", Name="intents")]
public IActionResult Intents(int chatbotId, int intentId)
{
    return View();
}

在.cshtml文件中:

@{
var parms = new Dictionary<string, int>
            {
                { "chatbotId", 1 },
                { "intentId", 1 }
            };
}

<a asp-route="intents"
   asp-all-route-data="parms">Intents</a>

如需更多帮助,请参阅this 链接。

【讨论】:

    【解决方案2】:

    首先,如果你想像Jeremy Lakeman所说的那样使用asp-route-xxx,你需要像这样改变你的路线:

    [Route("chatbot/intents")]
    

    &lt;a&gt;的链接可以是这样的:

    <a class="nav-link text-dark" asp-area="" asp-controller="Chatbot" asp-action="Intents" asp-route-chatbotId="1" asp-route-intentId="2">Intents</a>
    

    如果你像chatbot/intents这样改变你的路由,这意味着路由中不需要chatbotId或intentId。

    如果不想更改Route[Route("chatbot/{chatbotId}/intents/{intentId}")],可以使用href来替换taghelper(我用的是假数据,例子中1为chatbotId,2为intentId):

    <a class="nav-link text-dark" href="/Chatbot/1/Intents/2">Intents</a>
    

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 2017-03-06
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多