asp.net-core - 带有 anchor 标记助手的命名路由

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

我的 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-controllerasp-action , RouteData 中的所有值重新用于您的 <a>标签。这意味着 controller设置为“主页”,action设置为“索引”,id设置为“somedata”,因为那是 id field 。路由中指定的默认值仅在这些字段的值尚不存在时使用。

关于asp.net-core - 带有 anchor 标记助手的命名路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344748/

相关文章:

c# - 使用 ASP.net 核心 web api 发送多个文件

javascript - 如何调用服务器方法来列出表中的项目?

asp.net - tag-helpers 未正确生成我的网址

azure - 虚拟应用程序的不同应用程序设置/环境变量

asp.net - 您可以将模型属性从 ASP.NET 模型传递到 ReactJS.NET 组件吗?

c# - .Net 核心依赖注入(inject) IdbConnection

c# - 如何在 ASP.NET Core MVC 中启用跨源请求 (CORS)

asp.net-core - Razor Pages 中 wwwroot 下静态文件的路径

cookies - ASP.NET Core 中的数据保护 API 是否可以防止重放攻击?

linux - Serilog 在 Linux 上运行时不创建日志文件