asp.net mvc3 RouteLink

时间:2011-01-24 23:10:31

标签: c# asp.net asp.net-mvc-2 asp.net-mvc-3

我刚将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>

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

这是正常的。您只能有一个可选参数,此参数应该是路径定义中的最后一个参数。因此catsubcatpage不能是可选的。您需要提供他们的价值观:

<%: 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

只有最后两个网址是可能的,因为这是路由参数可以毫无歧义地映射到相应值的唯一情况。