string thing = ComparaSave.Resources.Message.EmailAdrRequired;
[Required(ErrorMessage = thing)] <---- The problem!!
[DataType(DataType.EmailAddress)]
[Display(Name = "Email Address")]
[StringLength(100)]
[EmailAddress]
public string Email { get; set; }
引发错误:
属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式。
如何将资源文件读入此类属性?
答案 0 :(得分:4)
您需要使用:
[Required(ErrorMessageResourceName= "FullNameRequired", ErrorMessageResourceType = typeof(MyResource)]
ErrorMessage仅用于字符串。
答案 1 :(得分:0)
这是不可能的。属性只能使用常量值,但资源值不是常量。
您可以将ErrorMessage更改为ErrorMessageResourceName,而不是使用此处的消息文本,而是使用错误消息字符串的资源名称。在属性代码中,您需要添加代码,该代码将从资源文件中读取字符串的名称。
有关如何加载资源字符串的代码,请查看.resx文件生成的.cs文件。