仅提供类别时路由失败

时间:2010-05-27 11:14:12

标签: asp.net-mvc routing routes

我的网站使用类别和子类别。

我想要跟随映射:

/分类/水果

/类别/水果/苹果

但如果我使用以下内容:

routes.MapRoute( 
            "Category", // Route name 
            "Category/{category}/{subcategory}", // URL with parameters 
            new { controller = "Entity", action = "Category" } // Parameter defaults 
        );

我获得404 / Category / Fruit但是/ Category / Fruit / Apples可以正常工作。我希望/ Category / Fruit能够正常工作,但我不能添加另一条同名的路线。我该如何解决这个问题?

提前致谢。

4 个答案:

答案 0 :(得分:1)

指定subcategory

的默认值
routes.MapRoute( 
        "Category", // Route name 
        "Category/{category}/{subcategory}", // URL with parameters 
        new { controller = "Entity", action = "Category", subcategory = "Some value" } // Parameter defaults 
    );

答案 1 :(得分:0)

路由规则不需要名称。您可以将其设置为null。

如果您将第二个参数标记为可选,则可以使用唯一规则来描述路由。或者将第二个参数默认值设置为:zerkms建议

答案 2 :(得分:0)

Phil Haack在他的博客上有一个route debugger

此实用程序显示从地址栏中当前请求的请求中提取的路径数据。因此,您可以在地址栏中输入各种URL以查看哪条路线匹配

答案 3 :(得分:0)

这适用于您的场景

routes.MapRoute(
    "Default", // Route name
    "Category/{category}/{subcategory}/{id}", // URL with parameters
    new { controller = "fruit", action = "apples", id = UrlParameter.Optional } // Parameter defaults
);

并将回复该网址 http://.../Category/Fruit/Apples/