我有一个应用程序,我正在使用全局路由来查询当前路径并返回页面特定数据。我有这样的路线设置...
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发出请求。我在路由设置中遗漏了什么吗?
答案 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
);
问题是您定义的默认路由不会解析到达它的任何请求。