我有一个MVC 4应用程序,我想创建到各个控制器的自定义路由。 目标只是不在URL中显示操作名称,而只显示控制器名称和参数。
routes.MapRoute(
"Account", // Route name
"Account/{param}", // URL with parameters
new { controller = "Account", action = "Account", param = UrlParameter.Optional }, // Parameter defaults
new { controller = @"^(Account)$" } //Parameter constraints
);
routes.MapRoute(
"Login", // Route name
"Login/{returnurl}", // URL with parameters
new { controller = "Login", action = "Login", returnurl = UrlParameter.Optional }, // Parameter defaults
new { controller = @"^(Login)$" } //Parameter constraints
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
目前我正在使用上面的路线工作正常,直到我调用另一个未在每个根的默认参数/ url中指定的操作。
例如登录/登录或登录/登录的路径?somevalue按预期工作,只是不显示URL Logn或Login / somevalue中的动作。但是,一旦请求同一控制器中的另一个动作,该路由就会解析为登录/登录/注销。当我设置路由以匹配对Login控制器的所有请求时,为什么会发生这种情况? 控制器中的所有操作都具有returnurl参数
如果有些人可能需要时间并查看我的路线,我们将非常感谢对此事的解释或澄清。
任何帮助或想法都会很好。 提前谢谢。