gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:47:24 24 4
gpt4 key购买 nike

当我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com