我有一個混合的ASP.Net Web窗體/ MVC應用程序。在其中一個MVC「頁面」/視圖中,我使用ToShortDateString()和ToLongDateString()渲染了一堆日期。這些工作在大多數情況下都能正常工作,但是在編譯應用程序後第一次加載視圖時,它們的格式不正確。ASP.Net MVC切換初始加載編譯後的文件
我追查下來,並檢查當前線程的文化。 99%的時間是en-US,但是在編譯後的MVC視圖的第一次加載時,它被設置爲en-GB。如果我在此之後立即重新加載頁面,則會回到en-US。
我已經嘗試在web.config文件中設置文化和uiculture來en-US強制它是正確的,但沒有運氣。
任何人對此有任何意見? MVC中的錯誤?
編輯(額外的代碼和嘗試): 即使我去完全過分和包括該基類的視圖
public class DNViewPage<T> : ViewPage<T> where T : class
{
protected override void OnInit(EventArgs e) {
base.OnInit(e);
CultureInfo cultureInfo = new CultureInfo("en-US");
this.Culture = "en-US";
this.UICulture = "en-US";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
}
protected void Page_Load(object sender, EventArgs e) {
CultureInfo cultureInfo = new CultureInfo("en-US");
this.Culture = "en-US";
this.UICulture = "en-US";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
}
protected override void InitializeCulture() {
CultureInfo cultureInfo = new CultureInfo("en-US");
this.Culture = "en-US";
this.UICulture = "en-US";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
base.InitializeCulture();
}
}
和包括這種在web.config
<globalization requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="en-US" culture="en-US"/>
並且這在.aspx文件的標題中
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Culture="en-US" UICulture="en-US"
再次,這是僅在編譯代碼之後的初始加載時,首次加載該頁面時。其他Web表單頁面不受影響,即使它們從System.Web.Mvc.ViewPage下載。隨後的所有負載都能正確處理文化。只需更改.aspx文件不會導致此問題,則必須編譯C#代碼才能實現此目的。
更多數據: 我將它追蹤到Render方法。在Render方法之前,文化是en-US,之後是en-GB(再次僅在編譯後的初始頁面加載中)。
你可以發佈你的web.config,頁面和控制器的代碼,你正在設置的文化?這可能會幫助我們 – Priyank 2011-05-13 16:34:24
添加更多數據以顯示正在發生的事情。 – Jared 2011-05-15 18:37:52