我刚将mvc2应用升级到mvc3。并且routelink停止了工作。任何线索??
全局
routes.MapRoute(
"Category",
"category/{cat}/{subcat}/{page}/{viewall}",
new
{
controller = "Category",
action = "Index",
cat = UrlParameter.Optional,
subcat = UrlParameter.Optional,
page = UrlParameter.Optional,
viewall = UrlParameter.Optional
}
);
查看
<%: Html.RouteLink("Women's", "Category", new { cat = "Women", subcat = "" })%>
这是它呈现的方式
<a href="">Women's</a>
答案 0 :(得分:3)
这是一个回归错误,正如Phil Haack [http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx]
所解释的那样答案 1 :(得分:2)
这是正常的。您只能有一个可选参数,此参数应该是路径定义中的最后一个参数。因此cat
,subcat
和page
不能是可选的。您需要提供他们的价值观:
<%: Html.RouteLink("Women's", "Category", new {
cat = "Women",
subcat = "somesubcat",
page = "123"
})%>
在ASP.NET MVC 3中,强制执行此规则。
请考虑以下网址:
category/1
category/1/2/
category/1/2/3
category/1/2/3/4
只有最后两个网址是可能的,因为这是路由参数可以毫无歧义地映射到相应值的唯一情况。