相当简单的问题。
<a asp-controller="Guide" asp-action="Index" asp-route-title="@Model.Title">Read more</a>
产生链接/Guide?title = Guide_no_1 ,但应该产生链接/Guide/Guide_no_1/
我能找到的所有文档都指定它应该输出/Guide/Guide_no_1/,所以我感觉到我错过了某些东西,设置或某些地方的属性。
我的路线是这样的,以防万一它们影响链接创建
[Route("/Guide/")]
public IActionResult Index() { ... }
[Route("/Guide/{title}/{page?}/")]
public IActionResult Index(string title, int page = 0) { ... }
[Route("/Guide/OnePage/{title}/")]
public IActionResult Index(string title) { ... }
最佳答案
您需要指定属性路由的顺序。
您需要订购路线,以便首先评估最具体的路线。对于属性路由,您将使用 Order 参数来执行此操作:
[Route("Guide/OnePage/{title}/", Order = 1)]
public IActionResult Index(string title) { ... }
[Route("Guide/{title}/{page?}/", Order = 2)]
public IActionResult Index(string title, int page = 0) { ... }
[Route("Guide/", Order = 3)]
public IActionResult Index() { ... }
现在,您会发现这两个路由的参数 Guide/OnePage/{title}/和 Guide/{title}/{page?}/也有问题。由于它们具有相同的 Controller , Action 和所需的参数,因此MVC不可能区分它们,并且始终以先订购者为准!
[Route("Guide/{title}/{page?}/", Name = "titleAndPage", Order = 2)]
public IActionResult Index(string title, int page = 0) { ... }
<a asp-route="titleAndPage" asp-route-title="fooTitle">Read more</a>
关于asp.net-mvc - MVC 6 anchor 标记助手未产生预期的href,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37117712/