1

以前,我曾與這個代碼在我看來沒有什麼問題,而且,它總是正確反映用戶的語言偏好IE9設置:突然間,CultureInfo.CurrentUICulture不反映IE9語言偏好?

@using (Html.BeginForm("Edit", "Revision", FormMethod.Post, new { id = "RevisionMain" })) 
{ 
    @Html.Hidden("UICultureLanguage", CultureInfo.CurrentUICulture.Name) 

... 
} 

我最近增加了驗證碼,並且也爲我工作之前。然而,在最後一次似乎工作的時間和它打破的時間之間,我的公司唯一做的事情是升級到Telerik Kendo;我不明白這可能會如何影響,但問題是,上面的代碼和下面的代碼,不再正確地反映在IE9中選擇的用戶的語言設置...

我有一個代碼塊我的視圖使用CultureInfo.CurrentUICulture.Name,但它似乎始終設置爲en-US,無論我設置了我的IE9語言首選項。注:此代碼嵌入@section:

**@section JQueryScripts** { 
    <script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"> </script> 
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"> </script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.1.9.js")" type="text/javascript"> </script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"> </script> 
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"> </script> 
    @* Language support for numerics that use ',' instead of '.' for decimal separator *@ 
    <script src="@Url.Content("~/Scripts/jquery.validate.globalized.number-mvc4.js")" type="text/javascript"> </script> 
    @* Language support for jQuery datepicker *@ 
    @{ 
     var currentUiCultureName = CultureInfo.CurrentUICulture.Name; 
     var scriptFile = @Url.Content("~/Scripts/jquery/ui/1.8.1/i18n/jquery.ui.datepicker-" + currentUiCultureName + ".js"); 
     // var scriptFile = @Url.Content("~/Scripts/jquery/ui/1.8.1/i18n-minified/jquery.ui.datepicker-" + currentUiCultureName + ".min.js"); 
     // Note: If we have a language other than english (en/en-US), include the appropriate .js file to 
     // support the jquery datepicker. Nothing needed to include for english because A) english is 
     // the default language supported by the jquery datepicker and B) there is no physical .js file for 
     // english because it is not needed (see A). 
     // 
     // Attention: If a language is not supported, let the javascript error come up, so we know that the 
     // language needs to be supported. 
     // 

     if (!currentUiCultureName.Equals("en", StringComparison.OrdinalIgnoreCase) && 
      !currentUiCultureName.Equals("en-US", StringComparison.OrdinalIgnoreCase)) 
     { 
      <script type="text/javascript" src="@scriptFile"> </script> 
     } 
    } 
} 

我的web.config目前在全球化以下設置:

<globalization enableClientBasedCulture="true" uiCulture="auto" culture="auto" requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" /> 

我還設置CultureInfo.CurrentCulture到CultureInfo.CurrentUICulture在我的控制器,使我的模型正確結合的日期,我的數值:

protected override void OnAuthorization(AuthorizationContext filterContext) 
     { 
      base.OnAuthorization(filterContext); 

      // For model binding. 
      Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture; 
     } 

非常重要的注意事項:出於某種原因,如果我設置在兩個OnAutho突破點riqation和jQueryScripts @section中的代碼塊,OnAuthorization被命中3次(我確實有一些ajax調用可能會導致這個($(document).ready(...),但必須驗證,從來沒有注意到這一點) - 但Thread.CurrentThread.CurrentUICulture似乎只在LAST調用中正確反映用戶的語言偏好,並且我放置在查詢CultureInfo.CurrentUICulture的jQueryScripts @section中的斷點在第一次調用OnAuthorize 。我知道OnAuthorize沒有設置CurrentUICulture,只是指出用戶的語言設置似乎在控制器中被識別,但在視圖中沒有被識別。非常困惑......任何想法?

回答

0

ANSWER

你會相信於我而言,這似乎是一個組策略問題,它禁止IE9語言的變化被識別由Web應用程序我的本地機器之中。非常奇怪,儘管自從我第一次拿起它以來,我一直使用的AD配置文件出現了各種問題。