自定义正则表达式未在客户端validation

我已经构建了一个自定义属性,以在客户端validation正十进制值。 问题是,当我将正则表达式直接应用于属性时,它工作正常,但是当我使用自定义属性时,它不起作用。

工作模式:

[RegularExpression(@"^(?!0?(,0?0)?$)([0-9]{0,3}(,[0-9]{1,2})?)?$", ErrorMessage = "Largura inválida.")] [Required(ErrorMessage = "Largura obrigatória.")] [Display(Name = "Formato Aberto")] public decimal SizeOpenedWidth { get; set; } 

自定义属性:

 public class PositiveDecimalAttribute : RegularExpressionAttribute { public PositiveDecimalAttribute() : base("^(?!0?(,0?0)?$)([0-9]{0,3}(,[0-9]{1,2})?)?$") { } } 

集成在酒店:

  [PositiveDecimal(ErrorMessage = "Largura inválida.")] [Required(ErrorMessage = "Largura obrigatória.")] [Display(Name = "Formato Aberto")] public decimal SizeOpenedWidth { get; set; } 

在第二个中,客户端validation提供错误消息:

 The field Formato Aberto must be a number. 

我是否需要在客户端validation中集成新属性?

您需要在global.asax注册您的属性。 在其Application_Start()方法中,添加以下代码:

 DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(PositiveDecimalAtt‌​ribute), typeof(RegularExpressionAttributeAdapter));