自定义我的MVC路由以获取特定名称

时间:2014-07-16 14:51:25

标签: c# asp.net-mvc routes

我有这条路线:

http://example.com/home/solucoes

但我会打电话给http://example.com/any-category/any-thing

我的控制者是“家”,行动是“solucoes”

我尝试使用它,但不能正常工作

  routes.MapRoute(
            name: "DefaultSolucoes",
            url: "{categoria}/{page}",
            defaults: new { 
                controller = "Home", 
                action = "solucoes", 
                categoria = UrlParameter.Optional,
                page = UrlParameter.Optional }
        );

1 个答案:

答案 0 :(得分:2)

很可能你的路线低于默认路线。问题在于这两条路线基本相同。因此,当默认路由捕获时,它只是查找名为" any-category"的控制器。和一个名为" any-thing"的动作。简单地使用不同的参数名称并不能区分不同的路径。

您可以将路线移至上方的默认路线,因为路线会自上而下处理并且第一场比赛获胜。但是,您基本上已将此路由设置为默认路由,因为它将捕获所有标准控制器/操作样式URL。您可以考虑为路由添加前缀,例如:

url: "categoria/{categoria}/{page}",

那么您的网址将采用/categoria/any-category/any-thing的格式,您就不会有任何冲突。