Asp.net 如何为本地化保留会话&;全球化
我想知道如何保持会话,或者如何让浏览器记住应用程序在从一个页面导航和移动到另一个页面时应保持哪种语言,如果我回忆起覆盖的方法:Asp.net 如何为本地化保留会话&;全球化,asp.net,visual-studio-2008,forms,Asp.net,Visual Studio 2008,Forms,我想知道如何保持会话,或者如何让浏览器记住应用程序在从一个页面导航和移动到另一个页面时应保持哪种语言,如果我回忆起覆盖的方法: protected override void InitializeCulture() { base.InitializeCulture(); string cult = Request["lstLanguage"]; if (cult != null)
protected override void InitializeCulture()
{
base.InitializeCulture();
string cult = Request["lstLanguage"];
if (cult != null)
{
Culture = cult;
UICulture = cult;
}
}
我试过:
Session["cult"] = cult;
但它不起作用
更多信息主页上有一个下拉列表,让用户选择语言。
我该怎么办?谢谢您可以将所选区域性保存在cookie中。这样,当用户返回您的站点时,文化就会被“记住” 使用会话将意味着用户在返回时必须继续选择区域性-不好 您可以使用请求对象访问站点的cookie:
Request.Cookies["culture"].Value = chosenCultureCode;
当用户首次登录系统时,您需要在会话中存储用户指定的区域性。然后您可以在InitializeCulture方法中使用它 登录时 会话[“当前区域性”]=(用户选择的区域性) 在InitializeCulture的覆盖中,您将使用以下内容检索: 会话[“当前文化”] 下面是我的一个方法的示例
/// <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;
}
}
//
///初始化页面的区域性
///
[版本更改(“6.1.34.89”、“24/12/2009”、“添加自定义文化”)]
受保护的覆盖无效初始化文化()
{
尝试
{
文化信息-文化信息;
尝试
{
oCultureInfo=CultureInfo.CreateSpecificCulture(this.CurrentCustomCulture);
}
捕获(异常)
{
//获取基于英国的文化信息
CultureInfo CultureInfo=新的CultureInfo(“en GB”);
RegionInfo RegionInfo=新的RegionInfo(cultureInfo.Name);
CultureAndRegionInfoBuilder CultureAndRegionInfoBuilder=new CultureAndRegionInfoBuilder(this.CurrentCustomCulture,CultureAndRegionModifiers.None);
cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(cultureInfo);
cultureAndRegionInfoBuilder.LoadDataFromRegionInfo(regionInfo);
//自定义更改
cultureAndRegionInfoBuilder.CultureEnglishName=this.CurrentCustomCulture;
cultureAndRegionInfoBuilder.CultureNativeName=this.CurrentCustomCulture;
cultureAndRegionInfoBuilder.Register();
oCultureInfo=CultureInfo.GetCultureInfo(this.CurrentCustomCulture);
}
捕获(例外)
{
投掷;
}
Thread.CurrentThread.CurrentCulture=oCultureInfo;
Thread.CurrentThread.CurrentUICulture=oCultureInfo;
Page.Culture=oCultureInfo.Name;
Page.UICulture=oCultureInfo.Name;
base.InitializeCulture();
}
捕获(例外)
{
投掷;
}
}
此.CurrentCustomCulture是我的会话属性请定义“不工作”我不知道如何正确使用它!谢谢乔·R!你介意给我发一些教程吗?或者一个例子?好的,没问题。我添加了一个用于设置区域性cookie的代码段。使用会话的问题是用户返回站点时必须不断选择其区域性。根据您的要求,这可能对用户不友好。当我保存cookie时,是否应该调用InitializeCulture方法并指定cookie的值?@Joe R,是的,我希望将数据持久化到数据库或类似数据库,并在用户登录时加载和填充会话。取决于这是一个面向私人还是面向公众的应用程序。关于在cookies中存储内容,需要注意的一点是,如果用户碰巧打开了in-private浏览,那么您的cookies将不会被打开work@Houssam-好人@幽灵-说得对。幸运的是,这种情况很少见。