可以为控制器创建捕获所有路由吗?

时间:2015-04-25 19:39:34

标签: c# asp.net-mvc asp.net-mvc-routing

对于特定的控制器,是否可以将任何不存在的操作路由到索引?

例如,如果我有

fashionController/
fashionController/shoes/
fashionController/bags/
fashionController/otherStuff/

我希望只能设置索引视图&动作,其他任何东西都会自动使用索引,而不必为其他任何东西创建单独的视图/动作。

1 个答案:

答案 0 :(得分:0)

不要求控制器或操作名称是Url的一部分。例如,您可以路由所有" fashion / *"与以下路线相同的行动。

routes.MapRoute(
            "AllToIndex",
            "fashion/{argument1}",
            new { controller = "fashion", action = "Index", argument1 = "" }
        );

请注意,路线会按照添加的顺序进行匹配,因此如果您在默认"{controller}/{action}"之后注册此路线,则永远不会匹配。一般来说,更具体的路线应该更通用一次,最后一个应该是可选的"cath'em all"一个"{*path}"数学。