【问题标题】:localizing mvc 3.0 validation client messages本地化 mvc 3.0 验证客户端消息
【发布时间】:2011-09-20 10:55:54
【问题描述】:

起初对 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; }

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

【问题讨论】:

  • Required 属性放在不可为空的值类型上几乎没有任何意义。 int 等值类型始终具有默认值。您是否尝试过使用可为空的整数?
  • 我编辑了你的帖子,请尽量保持客观,不要咆哮。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • owwwwww...REALLY THANKSSSSS...几天后终于解决了我的问题!...我希望微软提供更多这样的文档
猜你喜欢
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多