缘起
最近做的一个网站项目要求中英文双语 之前也有一个网站要求中英双语切换,但当时使用的是webform,结果URL类似Person.aspx,PersonZh.aspx这样。
现在使用MVC了当然要实现的完美一些,至少要看上去比之前爽。
目标
网站大部分页面使用地址格式:
http://xxx.com/zh/home/person | http://xxx.com/en/home/person
http://xxx.com/zh/home/register | http://xxx.com/en/home/register
根据地址中的zh|en来控制语言切换处理
默认url指向的中文页面,即
http://xxx.com/home/person => http://xxx.com/zh/home/person
管理后台使用manager前缀,不区分中英文,也就是不使用中间的zh
|en
http://xxx.com/manager/xxx
实现方式
asp.net mvc 3.0,Global.asax文件中配置
routes.MapRoute(
"Manager", "Manager/{action}/{id}",
new { controller = "Manager", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default", "{locale}/{controller}/{action}/{id}",
new { locale = "zh", controller = "Home", action = "Index", id = UrlParameter.Optional } ,
new {locale="zh|en" }
);
routes.MapRoute(
"DefaultOther", "{controller}/{action}/{id}",
new { locale = "zh", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
关键地方在于使用了route的constraints参数即new {locale="zh|en"}
这个地方。