带有锚标记助手的命名路由

时间:2016-02-11 16:26:27

标签: asp.net-core asp.net-core-mvc

我的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是可选的,我没有指定。

1 个答案:

答案 0 :(得分:2)

当您使用asp-route代替asp-controllerasp-action时,RouteData中的所有值都会重新用于<a>代码。这意味着controller设置为“主页”,action设置为“索引”,id设置为“somedata”,因为那是id字段。路径中指定的默认值仅在这些字段尚不存在值时使用。