【问题标题】:Named Routes with anchor tag helper带有锚标记助手的命名路由
【发布时间】:2016-05-22 13:10:23
【问题描述】:

我的 startup.cs 配置方法中有一个默认路由:

routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

我导航到具有以下 url 的页面:

http://localhost:59977/Home/Index/somedata

在上面的页面上,我创建了一个锚标记助手,如下所示:

<a asp-route="default">default route</a>

当我在网络浏览器上查看页面并查看它显示的锚元素时

<a href="/Home/Index/somedata">default route</a>

我的问题是这样的。为什么它在链接中添加了 id 部分(somedata)?我按名称调用路由,并假设它会使用MapRoute 中设置的默认选项,这意味着 id 是可选的,我没有指定。

【问题讨论】:

  • 这是您网址的一部分!
  • 但这是对服务器的新请求。如果我将 asp-route-id="moredata" 添加到上面的标签助手中,它会将 moredata 添加到 url 的末尾(而不是 somedata,这是我所期望的)
  • 但是你导航到Home/Index/somedata而不是Home/Index/default,默认路由是Home/Index/{id?}somedata是你的id。在您的代码中,您写的是 asp-route="default" 而不是 asp-route-id="default"

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


【解决方案1】:

当您使用asp-route 而不是asp-controllerasp-action 时,RouteData 中的所有值都会重新用于您的&lt;a&gt; 标记。这意味着controller 设置为“Home”,action 设置为“Index”,id 设置为“somedata”,因为那是id 字段。路由中指定的默认值仅在这些字段不存在值时使用。

【讨论】:

    猜你喜欢
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2020-10-25
    • 2021-09-04
    • 1970-01-01
    • 2020-03-10
    相关资源
    最近更新 更多