本地化mvc 3.0验证客户端消息

时间:2011-09-20 10:55:55

标签: asp.net-mvc-3 validation data-annotations

首先,对于Microsoft MVC团队感到遗憾,因为没有简单的本地化数据注释验证消息的解决方案。这花了我很多时间,最后找不到简单的解决方案!

我最终决定继承RequiredAttribute进行本地化。所以我这样做了:

public class MyRequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
    public MyRequiredAttribute()
        : base()
    {
        this.ErrorMessageResourceType = typeof(Resources.DataAnnotationDefaults);
        this.ErrorMessageResourceName = "Required";
    }
}

我在DataAnnotationDefaults.resx文件中提供了我的本地化消息。 所以我可以简单地使用它

      [MyRequired]
    public int UnitCode { get; set; }

但问题是:它不适用于客户端,也不适用于服务器端。为什么?我错过了什么?

令人惊讶的是,以下行也可以在客户端工作!

[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(DataAnnotationDefaults))] 
 public int UnitCode { get; set; }

如果有人可以帮助我,我会很高兴和感激。

1 个答案:

答案 0 :(得分:2)

您需要了解验证在MVC和.NET中的工作原理。 DataAnnotation是一个通用的验证库,可以在各种应用程序中使用,而不仅仅是MVC。

因此,MVC包含用于MVC的不同类型的适配器,用于添加对DataAnnotations的支持。客户端适配器专门针对System.ComponentModel.DataAnnotations中定义的属性。

因此,您需要创建自己的适配器以使其与派生属性一起使用。我写了一篇关于它的blog entry

更简单的方法是使用我的localized metadata provider