在我的ASP.NET项目中,我为CompareAttribute创建了一个自定义DataAnnotationsModelValidator。 (System.ComponentModel.DataAnnotations命名空间中的那个,而不是过时的。)
原因是我想添加一些自定义逻辑来替换错误消息,但实际上甚至在我添加此自定义逻辑之前就会出现问题。
public class LocalizableCompareAnnotationsAdapter : DataAnnotationsModelValidator<CompareAttribute>
{
public LocalizableCompareAnnotationsAdapter(ModelMetadata metadata, ControllerContext context, CompareAttribute attribute)
: base(metadata, context, attribute)
{
}
}
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(CompareAttribute), typeof(LocalizableCompareAnnotationsAdapter));
正如您所看到的,我没有做任何特别的事情......只需创建这个自定义适配器。问题是这似乎打破了我的验证,所以无论我在哪里使用CompareAttribute,它都会停止工作(至少在客户端)。
有谁知道为什么这会破坏验证?该项目包含用于其他验证属性的类似自定义适配器,例如RequiredAttribute和RegularExpressionAttribute。这些工作没有问题。