asp.net可以';不要改变当前的文化
我正在使用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: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;