Integration with ASP.NET MVCドキュメントに従って、FluentValidationをASP.NET MVC 3に正常に接続しました。
簡単な方法は、次のように)のGlobal.asaxのApplication_Start(中MVCの検証フレームワークにFluentValidationをプラグインすることである。
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"のドキュメントに従ってください。インタフェースIValidatorFactoryを実装するValidatorFactoryBaseをサブクラス化するFluentMvcValidatorFactoryクラスを作成します。カスタムバリデータファクトリは、適切なバリデータの選択を処理できます。
私はクライアント側の検証を実行しようとしていましたが、それは目立たない検証にもつながっているようです。私の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/Unlessメソッドは、目立たないように、とにかくそのままでは動作しません。たとえ私がそれらのために働く解決策を見つけることができたとしても、それは私を一歩近づけるでしょう。おそらく、When/Unlessのような条件付きで動作すると、おそらくカスタム検証と一緒に動作するでしょう。 –