自定义正则表达式未在客户端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(PositiveDecimalAttribute), typeof(RegularExpressionAttributeAdapter));