自定义我的MVC路由的具体名称

本文关键字:我的 MVC 路由 自定义 | 更新日期: 2023-09-27 18:13:16

我有这个路由:

http://example.com/home/solucoes

但是我想调用http://example.com/any-category/any-thing

我的控制器是"Home",动作是"solucoes"

我试着用它,但不工作

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

自定义我的MVC路由的具体名称

很可能你的路由在默认路由的下面。问题是,这两条路线基本上是相同的。所以,当默认路由捕获时,它只是寻找一个名为"any-category"的控制器和一个名为"any-thing"的动作。仅仅有不同的参数名并不能区分不同的路由。

你可以把你的路由移到默认路由之上,因为路由是自上而下处理的,第一个匹配的会获胜。然而,你基本上已经让这个路由成为默认路由,因为它将捕获所有标准控制器/动作样式的url。您可以考虑在路由中添加前缀,例如:

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

那么你的url将是/categoria/any-category/any-thing的形式,你不会有任何冲突。