我如何获得用户文化在HtmlHelper扩展MVC 3 . net应用程序
本文关键字:MVC 扩展 net 应用程序 HtmlHelper 何获得 用户 文化 | 更新日期: 2023-09-27 18:10:37
我正在为我的MVC 3应用程序创建一个新的HtmlHelper扩展。我需要在我的新助手中获取查看页面的用户的文化信息。
我怎样才能得到它??
public static class HtmlExtension
{
public static string StringFor(this HtmlHelper html, string key)
{
...
//I need to get CultureInfo in here!
...
}
}
直接的答案是"通过CultureInfo.CurrentCulture
获取它",但它本身不会帮助你。
考虑你的应用程序没有"用户文化"的概念——用户通过他们的浏览器与你交谈,你不在他们的系统上。
现在浏览器给你一个Accept-Language
头,你可以使用(谷歌会给你很多点击),但不建议使用这个设置来确定用户的区域设置,因为在实践中几乎没有用户知道这个设置,并自定义它来反映他们的偏好。最好的方法可能是单方面决定用户的文化是什么(例如将en
作为默认值,并给他们一种通过UI更改它的方法),将其存储在某处(在会话状态中或作为路由变量)并将其推入HttpApplication.AcquireRequestState
中的CultureInfo.CurrentCulture
。您可以在Global.asax
中这样做(示例取自MSDN):
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
CultureInfo ci = (CultureInfo)this.Session["culture"];
if (ci != null) {
CurrentThread.CurrentUICulture = ci;
CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);
}
}
在这一点上,这个答案变成了一个自我实现的预言,您可以从任何地方通过CultureInfo.CurrentCulture
访问文化。