如何将资源文件值分配给asp.net隐藏字段

时间:2012-02-26 08:11:03

标签: asp.net localization webforms resource-files

我处于需要从asp.net隐藏字段中读取值的情况

<asp:HiddenField ID="hdSearchInnerText"  runat="server" 
    Value="What are you looking for?" /> 

这是一个多语言网站,我需要从资源.resx文件中读取上述隐藏字段的值真正的问题是asp.net隐藏字段不会将meta:resourcekey =“hdSearchInnerText”作为属性。我怎么能解决这个问题,我试过了,找不到修复方法。

感谢任何想法或帮助。

2 个答案:

答案 0 :(得分:2)

来自Tools\Generate Local Resources的操作不会为隐藏字段生成元键,但您可以手动添加一个。

因此,从 App_LocalResources 打开资源文件,添加一个名为 hdSearchInnerTextResource1.Value 的新条目和所需的值“您在寻找什么?”

然后你可以在标记中使用它

<asp:HiddenField ID="hdSearchInnerText"  runat="server" 
    Value="What are you looking for?" meta:resourceKey="hdSearchInnerTextResource1" /> 

修改

您仍然可以使用隐藏字段“生成本地资源”,但您需要创建一个继承HiddenField类的新控件,覆盖Value属性并使用"Localizable"进行装饰属性

using System.Web.UI.WebControls;
using System.ComponentModel;

namespace MyApplication.Controls
{
    public class LocalizableHiddenField : HiddenField
    {
        [Localizable(true)]
        public override string Value
        {
            get
            {
                return base.Value;
            }
            set
            {
                base.Value = value;
            }
        }
    }
}

controls标记下的Web.Config中注册,并使用以下内容:

<cc:LocalizableHiddenField runat="server" ID="LocalizableHiddenField1" Value="some value"
            meta:resourcekey="LocalizableHiddenField1Resource1" />

答案 1 :(得分:1)

在您的代码背后,您可以编写如下内容:

this.hdSearchInnerText.Value = this.GetLocalResourceObject("hdSearchInnerText").ToString();

或者,您可以显式使用App_GlobalResources存储库中的资源:

<asp:HiddenField ID="hdSearchInnerText"  runat="server" 
Value="<%$ Resources:ResourceFile, hdSearchInnerText %>" /> 

其中ResourceFile是全局资源文件的名称,而hdSearchInnerText是资源文本的名称,其值为“您在寻找什么?”。