0

如果控制器上存在操作,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 时,并不重要。

事实证明,我在示例中给出的路径之上定义了另一条路径。这条路线虽然名称不同,但正在匹配。我什至没有想过要检查它,因为正如我所说,我认为给路由的名称会以某种方式影响匹配。

4

1 回答 1

1

路由决定使用哪个动作。如果没有定义路由,即使存在,您也不会触发操作。安装RouteDebugger并关闭你的 url。它会告诉你它匹配的所有路由以及它实际使用的路由。

于 2012-12-28T21:08:06.200 回答