在尝试映射路由之前,是否将现有操作路由到
本文关键字:路由 操作 是否 映射 | 更新日期: 2023-09-27 17:50:13
如果控制器上存在一个动作,asp.net-mvc在尝试处理任何自定义映射路由之前是否路由到该动作?
的例子。
假设我有以下控制器
public class ShopController : Controller
{
public ActionResult Shop(Category category)
{
// returns some result
}
public ActionResult CartItemCount()
{
// returns some result
}
}
我已经在我的路由集合中注册了以下路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Shop",
"Shop/{category}",
new { controller = "Shop", action = "Shop", category = UrlParameter.Optional } // Parameter defaults
);
}
如果我有以下URL会发生什么?
http://www.example.com/Shop/CartItemCount
编辑
我把自己弄糊涂了,以为映射路由的名称与它的处理方式有关。但事实并非如此,当涉及到url匹配路由名称时,这并不重要。
结果是,我在示例中给出的路由之上定义了另一个路由。这条路线,虽然命名不同,但正在匹配。我甚至没有想到要检查它,因为,正如我所说的,我认为路由的名称会以某种方式影响匹配。
路由决定使用哪个操作。如果没有定义路由,即使它存在,你也不会命中动作。安装RouteDebugger并启动你的url。它会告诉你它匹配的所有路由,以及它实际使用的路由。