Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将ASP.NET MVC验证与企业库验证集成_.net_Asp.net Mvc_Validation_Enterprise Library_Validation Application Bl - Fatal编程技术网

将ASP.NET MVC验证与企业库验证集成

将ASP.NET MVC验证与企业库验证集成,.net,asp.net-mvc,validation,enterprise-library,validation-application-bl,.net,Asp.net Mvc,Validation,Enterprise Library,Validation Application Bl,我已经在为我的模型使用EnterpriseLibrary5验证(也在WCF方法中使用),因此我决定避免ASP.NET4MVC中带有DataAnnotations的冗余验证程序 但看起来,企业库验证器并不是由MVC自动获取的 如果我使用MVC数据注释: [RegularExpression(MyValidationExpressions.Email, ErrorMessage = MyValidationMessages.InvalidEmailMessage)] public virtual s

我已经在为我的模型使用EnterpriseLibrary5验证(也在WCF方法中使用),因此我决定避免ASP.NET4MVC中带有DataAnnotations的冗余验证程序

但看起来,企业库验证器并不是由MVC自动获取的

如果我使用MVC数据注释:

[RegularExpression(MyValidationExpressions.Email, ErrorMessage = MyValidationMessages.InvalidEmailMessage)]
public virtual string Email { get; set; }
HTML包含数据val regex模式,该字段正在客户端验证

但如果我使用现有的基于EL的验证:

 [RegexValidator(MyValidationExpressions.Email, MessageTemplate = MyValidationMessages.EmptyFieldMessage))]
 public virtual string Email { get; set; }
它不会在客户端显示验证错误,并且生成的HTML没有任何验证属性

我在这里遗漏了什么,我如何强制MVC使用现有的EL验证器(客户端和服务器端)

解决方案

我接受了完全转向DataAnnotations的解决方案。这是最简单的方法,在Entlib5和MVC4中都可以很好地使用。但是ValidationFactory有一个小问题——我必须用CreateValidator和特定标志替换CreateValidatorFromAttributes。有关DataAnnotations如何使用ValidationFactory的说明,请参阅本文:


DataAnnotations还有[Required]属性,它可以很好地处理空字符串和只包含空格的字符串。VAB在这方面存在一些问题。

这不起作用的原因是VAB的
RegexValidatorAttribute
不是从
System.ComponentModel.DataAnnotations.RegularExpressionAttribute
继承的,而是直接从
ValidationAttribute
继承的。因为MVC不知道如何处理它

有一种方法可以改变MVC处理这个问题的方式,但我不知道怎么做。但是为什么不用DataAnnotations'
RegularExpressionAttribute
替换
RegexValidator属性的用法呢?验证应用程序块5能够处理DataAnnotations属性,因此如果DataAnnotations属性正常工作,只需使用它们。

您可以为企业库验证创建一个数据库。布拉德·威尔逊(Brad Wilson)有一篇文章描述了如何做到这一点


但是,看起来这只会执行服务器端验证。如果您使用的属性与DataAnnotations非常相似,我建议您使用它们。

相关问题可能重复谢谢,我刚刚尝试了您的建议-DataAnnotations可以很好地代替VAB,但是ValidationFactory有一个小问题-我必须用CreateValidator和特定标志替换CreateValidatorFromAttributes: