我正在尝试在asp.net mvc中创建路由
routes.MapRoute(
"Localization", // Route name
"{Culture}/{controller}/{action}/{id}", // URL with parameters
new { Culture = "en-US", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Home", action = "Index"} // Parameter defaults
);
概念很简单...... 控制器应该能够通过en-us / Controller / Action或控制器/动作调用... 有可能吗?
答案 0 :(得分:2)
您必须在第一条路线上使用路线约束,该路线将定义如何形成文化字符串。请改为尝试此路线定义:
routes.MapRoute(
"Localization",
"{Culture}/{controller}/{action}/{id}",
new { Culture = "en-US", controller = "Home", action = "Index", id = UrlParameter.Optional },
new { Culture = @"\w{2}(?:-\w{2})?" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
路由约束正则表达式并不完全正确,因为我可以回想起有三字母代码的文化。我定义的正则表达式允许一般文化,如:
/en/Controller
或
/en-US/Controller
/en-UK/Controller
根据自己的喜好调整。