10

我在 MVC2 应用程序中使用数据注释,并且在尝试将 RESX 文件资源用于错误消息时有点气馁。

我尝试了以下方法,但不断收到异常“属性参数必须是属性参数类型的常量表达式、类型表达式或数组创建表达式”

[Required(ErrorMessage = Resources.ErrorMessages.Required)]
[Required(ErrorMessageResourceName = Resources.ErrorMessages.Required,
          ErrorMessageResourceType = typeof(Resources.ErrorMessages)]

除非我ErrorMessageResourceName用 "Required" 而不是Resources.ErrorMessages.Required.

谁能告诉我我这样做是否正确?

4

1 回答 1

14

是的,你最后所做的基本上是正确的。ErrorMessageResourceName顾名思义,资源的名称而不是资源本身。

Resources.ErrorMessages.Required指向实际的(本地化的)错误消息(资源)。资源的名称只是“必需”,资源管理器的类型(用于ErrorMessageResourceType)是包含该资源的类,在本例中是Resources.ErrorMessages类。

所以你的声明应该是这样的:

[Required(ErrorMessageResourceType = typeof(Resources.ErrorMessages),
    ErrorMessageResourceName = "Required")]
public string Something { get; set; }
于 2010-03-15T23:30:35.593 回答