我正在使用EntLib的验证属性验证我的业务对象属性。我想使用资源文件本地化MessageTemplate文本,但是当我执行MessageTemplate = Resource.MyMessage之类的操作时,我得到以下编译时消息:
“属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式”
有没有办法为此文本使用资源文件?
谢谢, 杰
答案 0 :(得分:1)
您需要使用MessageTemplateResourceName
和MessageTemplateResourceType
属性,而不是MessageTemplate
属性。
您的代码看起来像这样:
[StringLengthValidator(1, 50,
MessageTemplateResourceName="InvalidLength",
MessageTemplateResourceType=typeof(MyResource))]
public string FirstName
{
get;
set;
}
请注意,您不能在属性中使用强类型资源类(例如,MyResource.InvalidLength),因为该属性需要一个常量,并且自动生成的类包含一个属性。 (这就是您的错误消息的原因。)
有关详细信息,请参阅Using the Message Template Resources。