2012-08-16 77 views
1

我想在登录和刷新页面中更改lang,但在我的组合框中InitialCulture函数中为null。如何在登录页面使用dropdownbox更改页面文化?

代码背后:

protected void myLang_OnChange(object sender, EventArgs e) 
    { 
     InitializeCulture(); 
    } 

    protected override void InitializeCulture() 
    { 
     string Kultur = myLang.SelectedValue; 
     if (string.IsNullOrEmpty(Kultur)) Kultur = "Auto"; 

     this.UICulture = Kultur; 
     this.Culture = Kultur; 


     base.InitializeCulture(); 
    } 

ASPX:

<asp:DropDownList Name="myLang" ID="myLang" runat="server" 
       OnSelectedIndexChanged="myLang_OnChange" AutoPostBack="True"> 
       <asp:ListItem Text="Auto" Value="auto" /> 
       <asp:ListItem Text="Türkçe" Value="tr-TR" /> 
       <asp:ListItem Text="İngilizce" Value="en-US" /> 
    </asp:DropDownList> 

THX对您有所帮助。

回答

4

你不能调用InitializeCulture方法。您必须将SelectedValueDropDownList保存为Session

protected void myLang_OnChange(object sender, EventArgs e) 
    { 
     Session["lang"]=myLang.SelectedValue; 
     Response.Redirect("your_current_page.aspx"); 
    } 

protected override void InitializeCulture() 
    { 
    string Kultur="en-US"; // default lang 
    if(Session["lang"]!=null) 
    Kultur = Session["lang"].ToString(); 

    this.UICulture = Kultur; 
    this.Culture = Kultur; 
    base.InitializeCulture(); 
} 
+0

也有我定义initialCulture功能的所有页面? – Mennan 2012-08-16 08:37:19

+0

是的!那是真实的。看看 - http://msdn.microsoft.com/en-us/library/bz9tc508.aspx – adatapost 2012-08-16 08:39:48

+0

确定它工作thx – Mennan 2012-08-16 08:43:21

0

你在你的代码

string Kultur = myLang.SelectedValue; 
     if (string.IsNullOrEmpty(Kultur)) Kultur = "Auto"; <-- 

你必须用值TR-TR更换不匹配,因为你得到的值