0
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 表达式或数组创建表达式。

如何将资源文件读入这样的属性?

4

2 回答 2

4

您需要使用:

[Required(ErrorMessageResourceName= "FullNameRequired", ErrorMessageResourceType = typeof(MyResource)]

ErrorMessage 仅用于字符串。

于 2012-05-30T19:33:56.240 回答
0

这是不可能的。属性只能使用常量值,但资源值不是常量。

您可以将 ErrorMessage 更改为 ErrorMessageResourceName,此处不使用消息文本,而是使用错误消息字符串的资源名称。在属性代码中,您需要添加将从资源文件中按名称读取字符串的代码。

有关如何加载资源字符串的代码,请查看为您的 .resx 文件生成的 .cs 文件。

于 2012-05-30T19:34:05.490 回答