DataAnnotations和Resources不能很好地发挥作用

时间:2010-03-15 23:19:08

标签: asp.net-mvc data-annotations globalization resx

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

我已经尝试了以下但继续获得异常“属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式”

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

我不断收到该错误消息,除非我将ErrorMessageResourceName替换为“必需”而不是Resources.ErrorMessages.Required

任何人都可以告诉我,如果我这样做了吗?

1 个答案:

答案 0 :(得分:13)

是的,你最后做的事情基本上是正确的。 ErrorMessageResourceName取名称所暗示的,资源的名称,而不是资源本身。

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

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

[Required(ErrorMessageResourceType = typeof(Resources.ErrorMessages),
    ErrorMessageResourceName = "Required")]
public string Something { get; set; }