0

現在のアプリケーション実装では、MicrosoftMvcValidation.debug.jsを使用したクライアント側の検証に大きく依存しています。

フォーム要素とフォームバリデーターがデータベースで定義され、実行時にデータベースからロードされます。ビューモデルプロパティAnswer1、Answer2、Answer3などがあり、これまではすべてのフィールドが必須だったため、それぞれに[Required]属性がありましたが、データベース設定に基づいて、実行時にこの必須アノテーションを適用する必要があります。一部の質問はオプションであるため。

バリデーター自体の再実装は行いたくありません。実行時に[必須]属性やその効果を動的に削除するか、実行時に動的に追加するだけです。

ASP.NETMVC2を使用します。

4

2 に答える 2

3

[必須]属性を、必須となる可能性のあるすべてのフィールドに追加します。コントロールのクライアント側をバインドしない限り、問題なくクライアントの検証をバイパスできます。サーバー側のポストバックアクションで、ModelState(IDictionaryを実装する)をループし、バイパスするバリデーターのModelStateのエラーをクリアします。

foreach( var validator in ModelState){
   if( validator.Key == "Validator_To_Bypass")
       validator.Value.Errors.Clear();
}
于 2011-09-08T17:31:42.087 に答える
0

実行時に検証がどのように行われるか、または行われるかどうかを決定できるValidationAttributeを継承するカスタムクラスを作成できるようです。これは、この要件を達成する1つの方法です。

于 2011-07-20T19:19:38.910 に答える