我有一个MVC 2.0应用程序,我有一个可以通过他们的第一个字母浏览的项目列表,我在主页面上有一个选项卡,用于整个项目列表。
我希望母版页上的标签始终显示为:
/items
还有abc的字母用于以字母开头的项目。例如,对于a
,它应该转到:
/items/a
要为我使用的母版页中的标签生成链接:
Url.Action("Index", "Items")
问题在于,如果我查看以a
开头的项目,那么我就在/items/a
,然后该标签也会指向此位置而不只是/items
。
任何人都知道为什么会这样,我该怎样做才能始终使用正确的UrlHelper方法指向标签中的/items
?
编辑:我的溃败如下:
routes.MapRouteLowercase(
"DefaultPrefixed", // Route name
"{controller}/{action}/{q}", // URL with parameters
new { controller = "Items", action = "Index", q = "" }, // Parameter defaults
new { q = @"[a-z]{1}" } // constraint
);
routes.MapRouteLowercase(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
答案 0 :(得分:9)
这取决于您的路线,但假设您使用的是默认路线:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Users", action = "Index", id = UrlParameter.Optional }
);
您始终可以将可选路线值设为空白:
Url.Action("Index", "Items", new { id = string.Empty })