2011-05-16 38 views
1

要改變我點擊了其中的ImageButton執行類似的語言:語言改變對第二點擊

SetCulture(Session, "en-GB"); 

此功能實現如下:

​​

而且,我的.aspx頁面重寫InitializeCulture的LocalizedPage類型:

protected override void InitializeCulture() 
{    
    if (Session["currentLocale"] != null) 
    { 
     //changes the cultures of the current Thread 
     CurrentUICulture = new CultureInfo((string)Session["currentLocale"]); 
     CurrentCulture = new CultureInfo((string)Session["currentLocale"]);     
    } 
    base.InitializeCulture(); 

} 

現在,問題是我必須cl在imageButton上點擊兩次以使語言改變。我能做些什麼來改變第一次點擊的語言?

請注意,我是相當新的ASP.NET所以它可能是一個簡單的解決方案

+0

你是如何解決這個問題的。我有同樣的問題 – 2013-01-18 11:03:28

回答

1

InitializeCulture()one of the first things當一個頁面加載這種情況發生:

的InitializeCulture方法被稱爲 在頁面生命週期的早期, 創建控件或 屬性的設置之前頁。 因此,要讀取從控件傳遞到頁面的值 ,您必須使用Form集合直接從 請求中獲取它們。

當您嘗試使用按鈕更改文化時,在文化初始化後,該代碼可以很好地運行到頁面生命週期中。

最簡單的方式來獲得文化點擊將其更改爲通過重定向SetCulture()後刷新頁面本身:

Response.Redirect(Request.RawUrl); 
1

我以前也有這個問題。很可能您正在使用母版頁,並且一些方法在母版頁中執行,而其他方法在內頁中執行。

問題在於事物被加載的順序。這意味着:有些代碼在SetCulture(Session, "en-GB");之前運行。

在這種情況下,嘗試進行調試以找出最先運行的內容,然後對其進行修復。

0

您是否試圖從SetCulture()內撥打電話InitializeCulture()

0

您的按鈕點擊的事件處理程序可能在頁面初始化後觸發,因此解決此問題的最簡單方法(不一定是最優雅的方法)是在會話狀態中更改文化,然後立即發出問題重定向到同一頁面。即

SetCulture(Session, "en-GB"); 
Response.Redirect(Request.RawUrl); 

這應該會導致瀏覽器再次請求頁面。

0

在按鈕單擊事件中更改文化後,使用下面的代碼行將用戶重定向到同一頁面。

Responce.Redirect(Request.UrlReferrer.AbsolutePath); 
0

最簡單的解決方法是在點擊處理程序Response.Redirect(Request.RawUrl);,文化有後已設置。