C# 为什么更改uiCulture时asp.net控件上的文本未更改

C# 为什么更改uiCulture时asp.net控件上的文本未更改,c#,jquery,asp.net,controls,globalization,C#,Jquery,Asp.net,Controls,Globalization,我在aspx页面上有用户控件。 uc具有下拉列表控件,用于选择三种语言之一:希伯来语(默认)、英语或俄语。 我有三个resx页面包含每种语言的翻译。 当用户选择语言时,我将父页面的uiCulture更改为selected选项: this.Page.UICulture = language; 它起作用了。 但是不完全。 我对div的定义如下: <div class="col col-md-3 col-xs-4"><%= Resources.MyResource.Curren

我在aspx页面上有用户控件。
uc具有下拉列表控件,用于选择三种语言之一:希伯来语(默认)、英语或俄语。
我有三个resx页面包含每种语言的翻译。
当用户选择语言时,我将父页面的uiCulture更改为selected选项:

this.Page.UICulture = language;  
它起作用了。
但是不完全。
我对div的定义如下:

<div class="col col-md-3 col-xs-4"><%= Resources.MyResource.CurrencyText %></div>  

其内容如预期发生了变化。
但我也定义了dropdownlist:

<asp:DropDownList ID="ddlCurrency" CssClass="form-control" runat="server" Height="16px">
  <asp:ListItem Value="1" Text="<%$ Resources:MyResource,shekelOpt %>"></asp:listitem>
  <asp:ListItem Value="2"  Text="<%$ Resources:MyResource,dollarOpt %>"></asp:ListItem>
</asp:DropDownList>  

而且它根本不会改变。
我尝试了解决方法,并在$(文档)中编写了ti。就绪函数类似于:

$("#<%= ddlCurrency.ClientID %> option:nth-child(1)").text("<%= Resources.MyResource.shekelOpt %>");
$("#<%= ddlCurrency.ClientID %> option:nth-child(2)").text("<%= Resources.MyResource.dollarOpt %>");  
$(“#选项:第n个子项(1)”)。文本(“”);
$(“#选项:第n个子项(2)”)。文本(“”);
它可以工作,但我不喜欢这个解决方案,它很难看,而且没有足够的建设

有人能帮助并告诉我如何更改asp:dropdownlist(以及asp:button)上的文本吗


在代码隐藏中覆盖区域性和UIculture的属性

protected override void InitializeCulture (){
  UICulture = selectedLanguage;
        Culture = selectedLanguage;
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
        base.InitializeCulture();
}

将此添加到ResourceClearing.aspx.vb中以测试ru区域性。不要将区域性设置在InitializeCulture:

protected override void InitializeCulture()
                {
                    Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");
                    base.InitializeCulture();
                }

将此添加到ResourceClearing.aspx页面

<asp:DropDownList ID="ddlCurrency" CssClass="form-control" runat="server" Height="16px">
  <asp:ListItem Value="1" Text="<%$ Resources:shekelOpt %>"></asp:listitem>
  <asp:ListItem Value="2"  Text="<%$ Resources:dollarOpt %>"></asp:ListItem>
</asp:DropDownList> 

如果不起作用,请在ResourceClearing.aspx页面中添加此标记

<asp:DropDownList ID="ddlCurrency" CssClass="form-control" runat="server" Height="16px" meta:resourcekey="ddlCurrencyResource1" >
                <asp:ListItem Value="1" Text="Shekal" meta:resourcekey="ListItemResource1"></asp:ListItem>
                <asp:ListItem Value="2"  Text="Dollar" meta:resourcekey="ListItemResource2"></asp:ListItem>
            </asp:DropDownList>

并在所有3个资源文件中添加以下条目及其值:


您可以使用label并在resx中定义要更改的文本。我如何在dropdownlist中定义label?让我搜索一下,我过去没有遇到过这个问题。如果我得到一些解决方案,会让你知道你在所有3个resx页面中都有shekelOpt和dollarOpt吗?当然!!!当我在jQuery代码中更改它时,正如我所展示的那样,它是有效的,但我无法通过代码手动更改所有控件。我尝试了它,没有任何更改。可能是web.config中的某些内容?您必须将资源保存在App\u GlobalResources或App\u LocalResources文件夹中。您需要将资源放在App_GlobalResources文件夹中。我将它们放在此文件夹中。奇怪的是(至少对我来说)标签和div确实发生了变化,只有控件的文本属性保持不变。当我在我的按钮Text=''上写入时,你能用这个must work试试吗Text=''“我得到了空文本现在我得到了错误”键为“shekelOpt”的资源对象找不到“。我知道它确实存在。你能发布包含条目的3.resx页面的屏幕截图吗?你是指每一个页面的内容吗?是的,任何内容…从你的代码看,你似乎试图访问全局资源,但你需要在所有3个resx文件中定义条目编辑你的问题,然后按ctrl+G