ASP.NET MVC路由:URL落入错误的路由

时间:2014-02-05 19:30:40

标签: asp.net asp.net-mvc asp.net-mvc-4 routing url-routing

我正在研究一个非常普通的mvc项目,我有三条不同的路线:

按ID显示产品的路线

        routes.MapRoute(
            "get-by-id",
            "{controller}/{id}",
            new { action = "GetById" },
            new { id = @"\d+" }
            );

按类别显示产品的路线

        routes.MapRoute(
            "get-by-category",
            "{controller}/{category}",
            new { action = "GetByCategory" },
            new { category = @"\w+" }
            );

默认路线

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

Conslusion:我希望 / products / create 请求属于默认路由(因为我想要“创建”到被渲染为动作)而不是按类别划分路线(因为它将“创建”作为字符串)。

1 个答案:

答案 0 :(得分:1)

使用Route Debuger它将帮助您调试路由以确定何时调用哪些路由。在asp.net mvc上工作时我常常遇到的工具之一。

BTW - 查看您的路线,那里没有可以映射到产品/创建的路线。在这种情况下,它只会带你到默认路线。您需要指定要映射到Products控制器的路径,如果您想要创建一个Create的操作,则需要具有" Products / Create"其动作指向Get-by-id动作

routes.MapRoute(
        "get-by-id",
        "{controller}/Create/{id}",
        new { action = "GetById" },
        new { id = @"\d+" }
        );