我插上FluentValidation到ASP.NET MVC 3成功,通過遵循Integration with ASP.NET MVC文檔。
簡單的方法是堵塞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類針對不同的驗證程序,根據業務規則。
如果要選擇不同的驗證這種方式,遵循「custom validator factory with an IoC container」的文檔。創建一個FluentMvcValidatorFactory子類,它實現了接口IValidatorFactory的ValidatorFactoryBase。自定義驗證器工廠可以處理選擇適當的驗證器。
我試圖讓客戶端驗證工作(它),但它似乎也插入不顯眼的驗證。我的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驗證器。
你能提供一個你試圖實現/驗證的具體例子嗎?你確切的情況是什麼? –
那麼,無論如何,只要使用When/Without方法不會不引人注目地工作。即使我能找到適用於這些解決方案的解決方案,也會讓我更靠近一步。可能的話,如果它工作w /條件如時/除非,它可能會工作與自定義驗證以及。 –