///<SUMMARY>
///从通用的页面头部的下拉框列表中选择的语言名。
///我们需要使用这个名字,因为我们还没有任何其它控件属性-现在控件本身还没有被初始化。
///因此,我们使用"嵌套的"下拉框列表名,从中我们可以从Request.Form[]集合中得到该下拉框列表的值。
/// </SUMMARY>
public const string LanguageDropDownID = "ctl00$cphHeader$Header1$ddlLanguage";
/// <SUMMARY>
///在一个回寄表单中的PostBack事件目标域的名字。你可以使用
///它来确定是哪个控件触发了PostBack:
/// Request.Form[PostBackEventTarget] .
/// </SUMMARY>
public const string PostBackEventTarget = "__EVENTTARGET";
/// <SUMMARY>
///重载InitializeCulture方法来设置在当前线程中用户选择的选项
///。注意,这个方法在Page生命周期的早期调用
///,并且目前我们不存在任何控件
///,因此必须使用Form集合.
/// </SUMMARY>
protected override void InitializeCulture()
{
///<remarks><REMARKS>
///检查是否PostBack发生.不能使用在此方法中使用IsPostBack
///,因为这个属性还没有设置。
///</remarks>
if (Request[PostBackEventTarget] != null) {
string controlID = Request[PostBackEventTarget];
if (controlID.Equals(LanguageDropDownID)) {
string selectedValue = Request.Form[Request[PostBackEventTarget]].ToString();
switch (selectedValue)
{
case "0": SetCulture("hi-IN", "hi-IN");
break;
case "1": SetCulture("en-US", "en-US");
break;
case "2": SetCulture("en-GB", "en-GB");
break;
case "3": SetCulture("fr-FR", "fr-FR");
break;
default: break;
}
}
}
///<remarks>
///从会话中取得文件,如果控制给导航到同一程序中的一个新页面。
///</remarks>
if (Session["MyUICulture"] != null && Session["MyCulture"] != null)
{
Thread.CurrentThread.CurrentUICulture = (CultureInfo)Session["MyUICulture"];
Thread.CurrentThread.CurrentCulture = (CultureInfo)Session["MyCulture"];
}
base.InitializeCulture();
}
/// <Summary>
///使用参数设置当前的UICulture和CurrentCulture
/// </Summary>
/// <PARAM name="name"></PARAM>
/// <PARAM name="locale"></PARAM>
protected void SetCulture(string name, string locale) {
Thread.CurrentThread.CurrentUICulture = new CultureInfo(name);
Thread.CurrentThread.CurrentCulture = new CultureInfo(locale);
///<remarks>
///由用户把当前线程的文化集保存在会话中
///,以便它能够在当前应用程序中跨页面应用。
///</remarks>
Session["MyUICulture"] = Thread.CurrentThread.CurrentUICulture;
Session["MyCulture"] = Thread.CurrentThread.CurrentCulture;
}
<globalization responseEncoding"=utf-8" requestEncoding="utf-8" fileEncoding="utf-8" />