例如,我希望能够通过/login
和/en/login
路由获取我的登录页面。
routes.MapRoute(
name: "LoginLang",
url: "{lang}/Login",
defaults: new { lang = "en", controller = "Account", action = "Login" }
);
但如果/en/login
被接受,则路由/login
不会被接受。可以通过其他途径进行处理,但是,您是否有解释为什么/login
被拒绝?
答案 0 :(得分:2)
因为您的路由模式表明lang(参数)字符串应该在字符串" Login"之前。在网址中。
如果您想同时支持en/login
和login
,则应再创建一个路由条目并在路由表中注册。
routes.MapRoute(
name: "DefaultLoginLang",
url: "Login",
defaults: new { lang = "en", controller = "Account", action = "Login" }
);
routes.MapRoute(
name: "LoginLang",
url: "{lang}/Login",
defaults: new { lang = "en", controller = "Account", action = "Login" }
);
// Your default route registration goes here
或者您可以使用属性路由
[Route("Login")]
[Route("{lang}/Login")]
public ActionResult Login(string lang="en")
{
//to do : return something
}