通过遵循与 ASP.NET MVC文档的集成,我已成功将 FluentValidation 插入到 ASP.NET MVC 3 。
简单的方法是将 FluentValidation 插入 Global.asax Application_Start() 中的 MVC 验证框架,如下所示:
FluentValidationModelValidatorProvider.Configure();
然后你可以用属性装饰你的 POCO 类,指定它们使用的验证器。
[Validator(typeof(PersonValidator))]
public class Person {
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public int Age { get; set; }
}
就我而言,我不想这样做(使用属性),实际上需要针对不同的验证器验证相同的 POCO 类,具体取决于业务规则。
如果您想以这种方式选择不同的验证器,请遵循“带有 IoC 容器的自定义验证器工厂”的文档。创建一个FluentMvcValidatorFactory 子类ValidatorFactoryBase,它实现了接口IValidatorFactory。自定义验证器工厂可以处理选择正确的验证器。
我试图让客户端验证工作(确实如此),但它似乎也插入了不显眼的验证。我的 html 输出如下所示:
<input type="text" value="" name="Email" id="Email" data-val-length-max="128" data-val-length="&#39;Email&#39; must be between 0 and 128 characters." data-val-email="&#39;Email&#39; is not a valid email address." data-val="true" class="text-box single-line">
只要您正确地将其插入 MVC,我认为不显眼应该可以工作。
在实践中,您不应该完全依赖客户端或不显眼的验证,仅在输入期间使用它来帮助用户。最终服务器需要验证,但您可以让服务器端代码使用相同的 FluentValidation 验证器。