我的 startup.cs
配置方法中有一个默认路由:
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
我导航到具有以下 url 的页面:
http://localhost:59977/Home/Index/somedata
在上面的页面上,我创建了一个 anchor 标记助手,如下所示:
<a asp-route="default">default route</a>
当我在网络浏览器上查看页面并查看它显示的 anchor 元素时
<a href="/Home/Index/somedata">default route</a>
我的问题是这样的。为什么要将 id 部分 (somedata
) 添加到链接中?我按名称调用路由,并假设它将使用 MapRoute
中设置的默认选项,这意味着 id 是可选的,我没有指定。
最佳答案
当您使用 asp-route
时而不是 asp-controller
和 asp-action
, RouteData
中的所有值重新用于您的 <a>
标签。这意味着 controller
设置为“主页”,action
设置为“索引”,id
设置为“somedata”,因为那是 id
field 。路由中指定的默认值仅在这些字段的值尚不存在时使用。
关于asp.net-core - 带有 anchor 标记助手的命名路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344748/