如何在asp.net核心中设置路由参数



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

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

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

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

您也可以使用"asp所有路由数据">。所以你可以如下命名你的路线:

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

在.cs.html文件中:

@{
var parms = new Dictionary<string, int>
{
{ "chatbotId", 1 },
{ "intentId", 1 }
};
}
<a asp-route="intents"
asp-all-route-data="parms">Intents</a>

有关更多帮助,请参阅此链接。

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

[Route("chatbot/intents")]

<a>链路可以是这样的:

<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("chatbot/{chatbotId}/intents/{intentId}")]。你可以使用href来替换taghelper(我使用假数据,在示例中1为chatbotId,2为intentId(:

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