1

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

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

这是一个多语言网站,我需要从资源 .resx 文件中读取上述隐藏字段的值,真正的问题是 asp.net 隐藏字段不采用 meta:resourcekey="hdSearchInnerText" 作为属性。我怎样才能解决这个问题,我试过了,但找不到解决办法。

任何想法或帮助表示赞赏。

4

2 回答 2

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;
            }
        }
    }
}

在标签下的 Web.Config 中注册它controls并使用如下:

<cc:LocalizableHiddenField runat="server" ID="LocalizableHiddenField1" Value="some value"
            meta:resourcekey="LocalizableHiddenField1Resource1" />
于 2012-02-26T10:57:09.670 回答
1

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

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

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

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

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

于 2012-04-05T15:44:33.600 回答