【发布时间】:2010-09-18 11:27:56
【问题描述】:
在我正在开发的 ASP.NET MVC (Beta) 站点上,有时对 ActionLink 的调用会返回给我包含查询字符串的 URL。我已经隔离了产生这种行为的情况,但我仍然不明白为什么它决定使用查询字符串参数,而不是产生一个干净的 URL。我知道它们在功能上是相同的,但是为了 URL 的一致性(和外观),这不是我想要的。
这是我的路线:
routes.MapRoute(
"Photo Gallery Shortcut",
"group/{groupname}",
new { controller = "Photos", action = "All", Id = "" });
routes.MapRoute(
"Tagged Photos", //since the Tagged action takes an extra parameter, put it first
"group/{groupname}/Photos/Tagged/{tagname}/{sortby}",
new { controller = "Photos", action = "Tagged", Id = "", SortBy = "" });
routes.MapRoute(
"Photo Gallery", //since the Gallery's defualt action is "All" not "Index" its listed seperatly
"group/{groupname}/Photos/{action}/{sortby}",
new { controller = "Photos", action = "All", Id = "", SortBy = "" });
routes.MapRoute(
"Group", //<-- "Group" Category defined above
"group/{groupname}/{controller}/{action}/{id}",
new {controller = "Photos", action = "Index", Id = ""});
现在只有当我查看名为“Tagged Photos”的路线描述的视图并通过以下方式执行 ActionLink 时才会出现问题:
Html.ActionLink<PhotosController>(p => p.All((string)ViewData["group"], ""), "Home")
生成 URL:
http://domain/group/GROUPNAME?sortBy=
从任何其他视图生成的 URL 是:
http://domain/group/GROUPNAME
我已经拉下了菲尔的ASP.NET Routing Debugger,一切都按顺序显示了。这个让我难住了。有什么想法吗?
【问题讨论】:
标签: c# asp.net asp.net-mvc routing