转:在ASP.NET MVC中通过URL路由实现对多语言的支持
2017-10-12 14:51
656 查看
对于一个需要支持多语言的Web应用,一个很常见的使用方式就是通过请求地址来控制界面呈现所基于的语言文化,比如我们在表示请求地址的URL中将上语言文化代码(比如en或者en-US)来指导服务器应该采用怎样的语言来显示界面的内容。对于一个ASP.NET MVC应用来说,我们很容易通过URL路由来实现这样一个功能。[本文已经同步到《How ASP.NET MVC Works?》中]
在具体介绍实现之前,我们通过一个简单的例子谈谈最终实现的效果。在通过ASP.NET MVC项目模板创建的空Web应用中,我们创建了如下一个HomeController,默认的Action方法Index用于呈现一个登录View。作为Model的LoginInfo类包含UserName和Password两个属性,分别表示登录输入的用户名和密码。需要注意的是,在两个属性上应用了DisplayAttribute并通过资源的方式指定了显示名称以实现对多语言的支持。[原代码从这里下载]
[/code]
[/code]
如下所示的Action方法Index对应的View的定义,这是一个基于LogInfo的强类型View。
[/code]
[/code]
在Global.asax中,我们修改了默认添加的URL路由注册代码,使请求URL中包含相应的语言文化信息({culture})。
[/code]
[/code]
我们直接运行该程序,并在请求地址中指定不同的Culture(en和zh),界面呈现基于的语言正是我们期望的。
实际上针对URL路由的本地化可以通过具有如下定义的名为CultureAwareHttpModule的自定义HttpModule来实现。我们通过CultureAwareHttpModule注册了HttpApplication的BeginRequest和EndRequest事件,通过URL路由系统得到表示语言文化的路由变量culture,并对当前线程的Culture和UICulture进行了相应的设置和恢复。
[/code]
[/code]
我们只需要通过如下配置对CultureAwareHttpModule进行注册即可。
[/code]
[/code]
在具体介绍实现之前,我们通过一个简单的例子谈谈最终实现的效果。在通过ASP.NET MVC项目模板创建的空Web应用中,我们创建了如下一个HomeController,默认的Action方法Index用于呈现一个登录View。作为Model的LoginInfo类包含UserName和Password两个属性,分别表示登录输入的用户名和密码。需要注意的是,在两个属性上应用了DisplayAttribute并通过资源的方式指定了显示名称以实现对多语言的支持。[原代码从这里下载]
[code] [code]
[/code]
[/code]
如下所示的Action方法Index对应的View的定义,这是一个基于LogInfo的强类型View。
[code] [code]
[/code]
[/code]
在Global.asax中,我们修改了默认添加的URL路由注册代码,使请求URL中包含相应的语言文化信息({culture})。
[code] [code]
[/code]
[/code]
我们直接运行该程序,并在请求地址中指定不同的Culture(en和zh),界面呈现基于的语言正是我们期望的。
实际上针对URL路由的本地化可以通过具有如下定义的名为CultureAwareHttpModule的自定义HttpModule来实现。我们通过CultureAwareHttpModule注册了HttpApplication的BeginRequest和EndRequest事件,通过URL路由系统得到表示语言文化的路由变量culture,并对当前线程的Culture和UICulture进行了相应的设置和恢复。
[code] [code]
[/code]
[/code]
我们只需要通过如下配置对CultureAwareHttpModule进行注册即可。
[code] [code]
[/code]
[/code]
相关文章推荐
- 在ASP.NET MVC中通过URL路由实现对多语言的支持
- 在ASP.NET MVC中通过URL路由实现对多语言的支持
- 在ASP.NET MVC中通过URL路由实现对多语言的支持
- ASP.NET MVC 多语言实现——URL路由
- Asp.net MVC 2 网站轻松实现多语言支持
- asp.net mvc 通过修改路由规则来实现页面的URL多参数传递
- Asp.Net MVC 多语言实现—— JavaScript多语言支持
- [翻译]ASP.NET MVC 3 开发的20个秘诀(四)[20 Recipes for Programming MVC 3]:实现多语言支持
- 自定义ResourceProviderFactory、IResourceProvider实现ASP.NET、ASP.NET MVC多语言支持
- ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)
- ASP.NET MVC——URL路由
- 传递额外的值 Passing Extra Values |在视图中生成输出URL | 高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
- Asp.Net MVC2.0 Url 路由入门---实例篇 【转】
- ASP.NET MVC 的URL路由介绍
- ASP.NET MVC 阻止通过Url直接访问服务器上的静态文件
- ASP.NET 4的Demo实践:URL“.NET研究”路由改进支持
- 晚上无聊象征性收取了网友100元辛苦费,实现支持多语言功能的XML语言包版的C#的ASP.NET多语言支持例子程序
- Asp.net MVC通过自定义特性实现Action日志记录
- ASP.NET 4的Demo实践:URL路由改进支持
- 晚上无聊象征性收取了网友100元辛苦费,实现支持多语言功能的XML语言包版的C#的ASP.NET多语言支持例子程序