asp.net MVC3全球路线和硬编码路线

时间:2011-09-25 23:41:27

标签: asp.net asp.net-mvc-3 routing

我有一个应用程序,我正在使用全局路由来查询当前路径并返回页面特定数据。我有这样的路线设置...

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Pages",
            "Pages",
            new { controller = "Pages", action = "Index" });

        routes.MapRoute(
            "Navigation",
            "Navigation",
            new {controller = "Navigation", action = "Index"});

        routes.MapRoute(
            "Default", // Route name
            "{*url}", // URL with parameters {controller}/{action}/{id}
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

我面临的问题是,当我去/ Pages尝试添加新页面时,PageController会像它应该的那样触发,但在调试时,在转到/ Pages之后,应用程序会向HomeController发出请求。我在路由设置中遗漏了什么吗?

2 个答案:

答案 0 :(得分:1)

默认路由由于{* url}而触发。因此,任何不是/ Pages的页面都将转到默认路径。

我需要更多信息,但如果您正在尝试/ Pages /无论如何,那么您需要在Pages路线上添加可选参数:

routes.MapRoute(
       "Pages",
       "Pages/{page}",
       new { controller = "Pages", action = "Index", page = UrlParameter.Optional });

答案 1 :(得分:0)

您的默认路线不正确。它应该看起来像打开一个新的MVC 3项目时定义的默认路由,如下所示:

routes.MapRoute(
     "Default", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
); 

问题是您定义的默认路由不会解析到达它的任何请求。