當前培養是線程寬:Page.Culture
和Page.UICulture
實際設置Thread.CurrentThread.CurrentCulture
和Thread.CurrentThread.CurrentUICulture
引擎蓋下。
如果在您的頁面標記中定義了用戶控件,我不認爲您可以做任何事情。如果您有LoadControl()
加載它,你可以暫時調用之前重寫當前線程的文化和事後恢復它,但它會很尷尬:
protected void Page_Load(object sender, EventArgs e)
{
// Some code...
CultureInfo oldCulture = Thread.CurrentThread.CurrentCulture;
CultureInfo oldUICulture = Thread.CurrentThread.CurrentUICulture;
Thread.CurrentThread.CurrentCulture = yourNewCulture;
Thread.CurrentThread.CurrentUICulture = yourNewUICulture;
try {
Controls.Add(LoadControl("yourUserControl.ascx"));
} finally {
Thread.CurrentThread.CurrentCulture = oldCulture;
Thread.CurrentThread.CurrentUICulture = oldUICulture;
}
// Some other code...
}
感謝您的回答 - 只是爲了澄清:我通過LoadControl將文化加載到已重寫InitializeCulture的aspx頁面上,但不幸的是,我的用戶控件仍然沒有收到已在其出現的aspx頁面上設置的文化in。 – 2011-02-02 16:01:37
@Dennis,`InitializeCulture()`在頁面生命週期的早期階段被調用,因此在加載用戶控件時應該設置所有值。你在哪個階段加載它? – 2011-02-02 16:04:24