1

我有一个 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中指定的操作。

例如,到 Login/Login 或 Login/Login?somevalue 的路由按预期工作,根本不显示 url Logn 或 Login/somevalue 中的操作。但是,一旦请求同一控制器中的另一个操作,该路由就会解析为例如登录/登录/注销。为什么当我设置路由以匹配登录控制器的所有请求时会发生这种情况?控制器中的所有动作都有 returnurl 参数

如果有人可以花时间查看我的路线,将不胜感激对此事的解释或澄清。

任何帮助或想法都会很好。提前致谢。

4

0 回答 0