我有一个需要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>