我已經對我的模型(也用於WCF方法)使用Enterprise Library 5驗證,因此我決定避免使用ASP.NET 4中的冗餘驗證器帶有DataAnnotations的MVC。集成ASP.NET MVC驗證和企業庫驗證
但是,似乎企業庫驗證器不是由MVC自動拾取的。
如果我使用MVC DataAnnotations:
[RegularExpression(MyValidationExpressions.Email, ErrorMessage = MyValidationMessages.InvalidEmailMessage)]
public virtual string Email { get; set; }
HTML包含數據-VAL-正則表達式模式和場正在驗證客戶端。
但是,如果使用現有的基於EL驗證:
[RegexValidator(MyValidationExpressions.Email, MessageTemplate = MyValidationMessages.EmptyFieldMessage))]
public virtual string Email { get; set; }
不顯示驗證錯誤的客戶端,並將生成的HTML沒有任何驗證屬性。
我在這裏錯過了什麼,如何強制MVC使用客戶端和服務器端的現有EL驗證器?
解決方案:
我接受完全轉移到DataAnnotations解決方案。這是最簡單的方法,它與EntLib 5和MVC 4一起工作正常。但是有一點與ValidationFactory有關 - 我必須用CreateValidator和特定標誌替換CreateValidatorFromAttributes。請參閱這篇文章解釋有關DataAnnotations如何與ValidationFactory工作:
CreateValidatorFromAttributes doesn't use DataAnnotations Attributes
而且DataAnnotations有[必需]屬性與空字符串和僅包含空格的字符串很好的交易。與VAB有一些問題。
[Asp.Net MVC 2客戶端驗證實現企業庫驗證塊]的可能重複(http://stackoverflow.com/questions/2666954/asp-net-mvc-2-client-validation-implementation-for-企業庫驗證) – jrummell
http://elvalweb.codeplex.com/ – Steven
相關問題http:// stackoverflow。com/questions/5619996/can-mvc-updatemodel-use-enterprise-library-vab –