当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC:何时设置Thread.CurrentThread.CurrentUICulture?

如何解决《ASP.NETMVC:何时设置Thread.CurrentThread.CurrentUICulture?》经验,为你挑选了2个好方法。

我刚刚开始本地化ASP.Net MVC应用程序.大多数字符串将在资源文件中定义,并通过Matt的Localization Helpers检索.其他字符串必须存储在数据库中.

我的问题: 我应该CurrentUICulture在请求管道中尽早设置并在整个应用程序中使用它,还是Request.UserLanguages[0]在需要时直接使用?

现在我想我应该CurrentUICulture在Application_BeginRequest中设置.实现看起来像这样:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var cultureName = HttpContext.Current.Request.UserLanguages[0];
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}

这是最好的地方CurrentUICulture,是Request.UserLanguages[0]获得这些信息的最佳地点吗?


更新:

Ariel的帖子让我意识到这可以在没有代码的情况下定义,使用web.config


  
  

Ariel Popovs.. 13

以下是使用HttpModule的示例:

http://weblogs.manas.com.ar/smedina/2008/12/17/internationalization-in-aspnet-mvc/

其他选项,创建一个基本的Controller类并在那里实现本地化逻辑.或者使用动作过滤器属性,但您必须记住在每个控制器上添加它或将此方法与基本Controller类组合.



1> Ariel Popovs..:

以下是使用HttpModule的示例:

http://weblogs.manas.com.ar/smedina/2008/12/17/internationalization-in-aspnet-mvc/

其他选项,创建一个基本的Controller类并在那里实现本地化逻辑.或者使用动作过滤器属性,但您必须记住在每个控制器上添加它或将此方法与基本Controller类组合.



2> Mathias F..:

Request.UserLanguages [0]只能提示用户希望看到的语言.大多数用户不知道在哪里更改浏览器语言.

另一点:不确定Request.UserLanguages [0]是否是一种有效的语言.它甚至可以为空.(不知道那里有什么机器人)

您通常在页面上有语言选择器.一旦用户在那里选择了语言,它就存储在cookie,会话或URL中.我喜欢使用url,因为我认为它看起来很漂亮.

如果用户在未在页面上设置语言的情况下看到您的页面,则应检查Request.UserLanguages [0]是否是您支持的语言并设置Thread.CurrentThread.CurrentUICulture.

我使用过滤器来设置Thread.CurrentThread.CurrentUICulture.好吧,只要没有其他过滤器使用Thread.CurrentThread.CurrentUICulture.否则,您需要为过滤器设置正确的执行顺序.

我也使用Matts助手,到目前为止效果很好.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有