我的startup.cs
配置方法中有一条默认路由:
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
我导航到包含以下网址的页面:
http://localhost:59977/Home/Index/somedata
在上面的页面上,我创建了一个锚标签助手,如下所示:
<a asp-route="default">default route</a>
当我在Web浏览器上查看页面并查看它显示的锚元素时
<a href="/Home/Index/somedata">default route</a>
我的问题是这个。为什么它在链接中添加了id部分(somedata
)?我按名称调用了路由,并假设它将使用MapRoute
中设置的默认选项,这意味着id是可选的,我没有指定。
答案 0 :(得分:2)
当您使用asp-route
代替asp-controller
和asp-action
时,RouteData
中的所有值都会重新用于<a>
代码。这意味着controller
设置为“主页”,action
设置为“索引”,id
设置为“somedata”,因为那是id
字段。路径中指定的默认值仅在这些字段尚不存在值时使用。