asp.net-mvc - MVC 路由 Html.ActionLink 使用 ?id=1 而不是/id 创建 URL

标签 asp.net-mvc url asp.net-mvc-routing

当我使用 Html.ActionLink() 时,创建的 URL 不是所需的格式:

Html.ActionLink(Model.ProductCode, "Update", new { id = Model.ProductId })

制作这个网址
/Update?id=1

当我想要这个 URL 时:
/Update/1

哪些路由选项会创建第二个 URL?这是我们首选的 URL 样式。

两个 URL 都有效并显示正确的页面 - 但是我们只想使用/id

在 Global.asax 中,MVC 默认路由处理两个 URL
routes.MapRoute(
    "Default",                                               // Route name
    "{controller}/{action}/{id}",                            // URL with parameters
    new { controller = "Home", action = "Index", id = "" }); // Parameter defaults

最佳答案

我可以通过创建一个关于我的默认路由的路由来复制这个问题,该路由仍然与一般模式相匹配。例子:

routes.MapRoute(
                            "Default2", // Route name
                            "{controller}/{action}", // URL with parameters
                            new { controller = "Home", action = "Index"} // Parameter defaults
                        );

当放置在我的默认路由之上时,我的 URL 中会出现 ?id=1 。您能否确认此 ActionLink 不匹配您期望它匹配的路由之上的任何路由?

编辑:以下内容不会影响 URL

但是,在其他情况下使用 UrlParameter.Optional 仍然是有利的。除非暴民统治另有规定,否则为繁荣而离开。

new UrlParameter.Optional value. If you set the default value for a URL parameter to this special value, MVC makes sure to remove that key from the route value dictionary so that it doesn’t exist.



我认为您需要稍微调整路线。将 id = ""更改为 id = UrlParameter.Optional
routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional });

这就是我们用于默认路由的方式,您正在寻找的行为就是我们的应用程序的行为方式。

关于asp.net-mvc - MVC 路由 Html.ActionLink 使用 ?id=1 而不是/id 创建 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8721389/

相关文章:

java - 如何像浏览器一样在 Java 中组合 URL 片段?

c# - HTTP 错误 403.14 - 禁止访问 - 带 IIS Express 的 MVC 4

c# - MVC : How can I change a Html. 网格行的颜色基于值?

asp.net-mvc - 使用 MvcHandler 为每个请求添加带有访问 token 的授权 header

javascript - 使用 javascript 为 google+ 链接设置文本

asp.net-mvc - ASP.NET MVC 路由的性能

asp.net-mvc - ASP.NET MVC中类似OData的路由

jquery - 用自己的功能打开Bootstrap Modal

asp.net-mvc - 在 MVC Controller 中引用存储库

forms - html 表格 : checkboxes group for pretty url query