asp.net mvc3 RouteLink

发布于 2024-10-13 10:35:57 字数 781 浏览 3 评论 0原文

我刚刚将我的 mvc2 应用程序升级到 mvc3。并且路线链接停止工作。有什么线索吗?

全局

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>

I have just upgraded my mvc2 app to mvc3. And the routelink stopped working. any clue??

Global

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
            }  
        );

View

<%: Html.RouteLink("Women's", "Category", new { cat = "Women", subcat = "" })%>

This is how it renders

<a href="">Women's</a>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倾城月光淡如水﹏ 2024-10-20 10:35:57

这很正常。您只能有一个可选参数,并且该参数应该是路由定义中的最后一个参数。所以 catsubcatpage 不能是可选的。您需要提供它们的值:

<%: Html.RouteLink("Women's", "Category", new { 
    cat = "Women", 
    subcat = "somesubcat", 
    page = "123"  
})%>

在 ASP.NET MVC 3 中强制执行此规则。

考虑以下 url:

category/1
category/1/2/
category/1/2/3
category/1/2/3/4

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

That's normal. You can have only one optional parameter and this parameter should be the last one in your route definition. So cat, subcat and page cannot be optional. You need to supply their values:

<%: Html.RouteLink("Women's", "Category", new { 
    cat = "Women", 
    subcat = "somesubcat", 
    page = "123"  
})%>

In ASP.NET MVC 3 this rule was enforced.

Consider the following urls:

category/1
category/1/2/
category/1/2/3
category/1/2/3/4

Only the last two urls are possible because it's the only case where the route parameters could be mapped to their corresponding values without ambiguity.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文