2011-04-11 83 views
1

我想知道如何保持一個會話或如何讓瀏覽器記住哪種語言的應用程序保持在導航的同時,並從一個頁面移動到另一個應該回想overrided梅索德:如何保持本地化和全球化的會話?

protected override void InitializeCulture() 
     { 
      base.InitializeCulture(); 
      string cult = Request["lstLanguage"]; 
      if (cult != null) 
      { 
       Culture = cult; 
       UICulture = cult; 
      } 
} 

我」已經試過:

Session["cult"] = cult; 

,但它不工作 更多的信息有AA下拉列表在主頁面讓用戶選擇的語言。 我該怎麼辦?謝謝

+0

請界定「不工作」 – UpTheCreek 2011-04-11 08:14:31

+0

我不知道如何正確使用它! – Houssam 2011-04-11 08:25:21

回答

1

您可以將選定的文化保存在cookie中。這樣,當用戶返回您的網站時,文化將被「記住」。

使用會話將意味着用戶必須在他們返回時不斷選擇文化 - 不好。

您可以使用Request對象訪問網站的Cookie:

Request.Cookies["culture"].Value = chosenCultureCode; 
+0

感謝Joe R!你介意給我發任何教程嗎?或者一個例子? – Houssam 2011-04-11 08:24:12

+0

好的,沒問題。我已經添加了一個用於設置文化cookie的代碼段。 – 2011-04-11 08:42:53

1

您需要存儲用戶指定的文化會話當用戶第一次登錄到系統中。然後你可以在你的InitializeCulture方法中使用它。

例如。登錄

會議[ 「的CurrentCulture」] =(你的用戶選擇的文化)時

,並在重寫爲InitializeCulture你會檢索與:

會議[ 「的CurrentCulture」。

這是我的一個方法的例子。

/// <summary> 
    /// Initializes culture for the page 
    /// </summary> 
    [VersionChange("6.1.34.89", "24/12/2009", "Custom Cultures added")] 
    protected override void InitializeCulture() 
    { 
     try 
     { 
      CultureInfo oCultureInfo; 

      try 
      { 
       oCultureInfo = CultureInfo.CreateSpecificCulture(this.CurrentCustomCulture); 
      } 
      catch (ArgumentException) 
      { 
       //Get culture info based on Great Britain 
       CultureInfo cultureInfo = new CultureInfo("en-GB"); 
       RegionInfo regionInfo = new RegionInfo(cultureInfo.Name); 

       CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder(this.CurrentCustomCulture, CultureAndRegionModifiers.None); 

       cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(cultureInfo); 
       cultureAndRegionInfoBuilder.LoadDataFromRegionInfo(regionInfo); 

       // Custom Changes 
       cultureAndRegionInfoBuilder.CultureEnglishName = this.CurrentCustomCulture; 
       cultureAndRegionInfoBuilder.CultureNativeName = this.CurrentCustomCulture; 

       cultureAndRegionInfoBuilder.Register(); 

       oCultureInfo = CultureInfo.GetCultureInfo(this.CurrentCustomCulture); 
      } 
      catch (Exception) 
      { 
       throw; 
      } 

      Thread.CurrentThread.CurrentCulture = oCultureInfo; 
      Thread.CurrentThread.CurrentUICulture = oCultureInfo; 

      Page.Culture = oCultureInfo.Name; 
      Page.UICulture = oCultureInfo.Name; 

      base.InitializeCulture(); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
    } 

This.CurrentCustomCulture是我的會話屬性

+0

使用Session的問題是用戶在返回網站時必須繼續選擇他們的文化。根據您的要求,這可能不便於用戶使用。 – 2011-04-11 08:39:30

+0

當我保持cookie時,應該調用InitializeCulture方法併爲cookie的值賦值? – Houssam 2011-04-11 08:41:21

+0

@Joe R,是的,我期望數據被持久保存到數據庫等等,並在用戶登錄時加載並填充會話。取決於這是私人還是公共應用程序 – WraithNath 2011-04-11 08:41:58