2011-04-11 85 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