我想从资源文件中为ErrorMessage
加载CustomValidator
。
我的CustomValidator
设置如下:
<asp:CustomValidator ID="cv1" runat="server" ControlToValidate="txt1"
ErrorMessage="TEXT TO BE LOCALIZED" OnServerValidate="cv1_Validate" />
我的验证方法如下:
protected void cv1_Validate(object source, ServerValidateEventArgs e)
{
if (FalseCondition)
{
e.IsValid = false;
}
else
{
e.IsValid = true;
}
}
验证工作正常,但我希望从本地资源文件中提取ErrorMessage
。
编辑:如果有任何方法可以使用meta:resourcekey
,我也很好奇。
答案 0 :(得分:12)
假设您有一个页面(或控件)的本地资源,这将是这样做的方式
ErrorMessage="<%$ resources:ResourceName %>"
如果您从全局资源文件中获取文本,您应该执行类似这样的操作
ErrorMessage="<%$ resources:Strings, ResourceName %>"
其中Strings
是文件的名称。这种方法称为显式本地化。
修改强>
您可以使用meta:resourcekey
。这称为隐式本地化。您需要拥有本地资源,因为此方法对全局资源无效。
确保您拥有符合以下条件的本地资源文件(.resx文件):
它们位于App_LocalResources文件夹中。
基本名称与页面名称匹配。
例如,如果您正在使用名为Default.aspx的页面,则资源文件名为Default.aspx.resx(对于默认资源),Default.aspx.es.resx,Default.aspx.es-mx .resx,等等。
- 文件中的资源使用命名约定resourcekey。“property”。
例如,键名Button1。“Text”。
- 醇>
在控制标记中,添加隐式本地化属性。
例如:
&lt; asp:Button ID =“Button1”runat =“server”Text =“DefaultText” meta:resourcekey =“Button1”/&gt;
来源:MSDN
答案 1 :(得分:1)
如果您想在代码隐藏中执行此操作,可以使用以下命令:
ResourceManager resmgr = new ResourceManager("YourApplication.YourBaseResourceFile ",
Assembly.GetExecutingAssembly());
protected void cv1_Validate(object source, ServerValidateEventArgs e)
{
if (FalseCondition)
{
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
String str = resmgr.GetString("Error Msg Key in Resource File");
cv1.ErrorMessage =str;
e.IsValid = false;
}
else
{
e.IsValid = true;
}
}