asp.net可以';不要改变当前的文化

asp.net可以';不要改变当前的文化,asp.net,multilingual,Asp.net,Multilingual,我正在使用asp.net本地化来尝试创建一个多语言网站,基本上我有两个全球资源,一个是英语,另一个是阿拉伯语 我添加了一个包含两种语言的下拉列表: <asp:DropDownList runat="server" ID="changeLang" AutoPostBack="true" > <asp:ListItem Value="en">English</asp:ListItem> <asp:ListItem Value="a

我正在使用asp.net本地化来尝试创建一个多语言网站,基本上我有两个全球资源,一个是英语,另一个是阿拉伯语

我添加了一个包含两种语言的下拉列表:

  <asp:DropDownList runat="server" ID="changeLang" AutoPostBack="true" >
      <asp:ListItem Value="en">English</asp:ListItem>
      <asp:ListItem Value="ar">Arabic</asp:ListItem>
      </asp:DropDownList>
但是语言不会改变,在调试时,字符串lang的值总是空的。

我正在使用asp.NET4.0


问题出在哪里,谢谢。

我建议将页面设置为根据用户的浏览器设置自动确定区域性:

<%@ Page UICulture="auto" Culture="auto" %>
然后在控件上使用隐式声明性绑定:

<asp:Button ID="btnSubmit" runat="server" 
    meta:resourcekey="btnSubmit" />
获取大量详细信息和代码示例。如果您希望按照您的示例以编程方式进行,请参阅以下参考资料:


    • 听起来有两个不同的问题

      1) 您无法从代码中的下拉列表中获取值,只能返回null。您是否尝试过直接访问对象而不是通过请求对象。例如:
      string lang=changeLang.SelectedValue

      2) 文化尚未形成。对于第二项,首先尝试创建特定的区域性,并将其用于
      CurrentUICulture
      CurrentUICulture
      。例如:

      CultureInfo info = CultureInfo.CreateSpecificCulture("en-US");
      Thread.CurrentThread.CurrentUICulture = info;
      Thread.CurrentThread.CurrentCulture = info;
      

      此外,看起来您可能正在遵循本文中的代码示例。您需要在下拉列表中使用特定的区域性标识符(例如en-US和ar-eg)

      我缺少
      MyBase.InitializeCulture()
      @TimSchmelter-我尝试在代码末尾添加它,但没有效果。自动区域性设置工作正常,我的问题是我需要手动更改区域性。没有回答用户的问题
      <asp:Button ID="btnSubmit" runat="server" 
          meta:resourcekey="btnSubmit" />
      
      CultureInfo info = CultureInfo.CreateSpecificCulture("en-US");
      Thread.CurrentThread.CurrentUICulture = info;
      Thread.CurrentThread.CurrentCulture = info;