我处于需要从asp.net隐藏字段中读取值的情况
<asp:HiddenField ID="hdSearchInnerText" runat="server"
Value="What are you looking for?" />
这是一个多语言网站,我需要从资源.resx文件中读取上述隐藏字段的值真正的问题是asp.net隐藏字段不会将meta:resourcekey =“hdSearchInnerText”作为属性。我怎么能解决这个问题,我试过了,找不到修复方法。
感谢任何想法或帮助。
答案 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是资源文本的名称,其值为“您在寻找什么?”。