这是我过去所做的:
在您的web.config
文件中,添加以下设置:
<system.web>
<globalization enableClientBasedCulture="true" />
</system.web>
这将处理您的后备实例,其中查询字符串中没有设置语言。
现在让控制器使用查询字符串“lang”参数:
(我通常会在“BaseController”中有以下代码,并让我的控制器继承自此。)
将以下覆盖方法添加到您的控制器:
protected override IAsyncResult BeginExecute(RequestContext requestContext, AsyncCallback callback, object state)
{
var culture = requestContext.HttpContext.Request.QueryString["lang"];
//!!Check to see if culture exists and is valid before setting the thread culture
var cultureInfo = new CultureInfo(culture);
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
return base.BeginExecute(requestContext, callback, state);
}
这使您能够读取查询字符串中的“lang”值,然后使用它来设置线程的文化。这应该覆盖设置设置的任何文化enableClientBasedCulture
。