ASP.NET Core MVC:asp-action标签助手为何自动添加asp-route-id?
ASP.NET Core MVC标签助手自动包含id参数的原因及解决办法
这是ASP.NET Core MVC的**路由值延续(Route Value Persistence)**特性,不是Bug。
当你访问Home/MyAction/1时,当前请求的路由数据上下文里已经包含了id=1这个值。标签助手在生成路由链接时,会自动从当前请求的路由数据中提取匹配的参数值,填充到对应的路由模板中——哪怕你没有通过asp-route-id显式指定。这种设计是为了方便在同一个路由上下文下生成链接时,自动保留已有的路由参数,避免重复输入。
解决办法
- 显式清除
id参数:在标签助手中添加asp-route-id="",强制清空该参数值<a asp-action="MyAction" asp-route-id="">My action</a> - 如果你需要清除多个路由参数,可以使用
asp-all-route-data传入空字典:<a asp-action="MyAction" asp-all-route-data="@(new Dictionary<string, string>())">My action</a>
这样生成的链接就会是/Home/MyAction,不会自动带上id参数了。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

