0

私はこのシナリオを持っています。

と がform Aありform Bます。どちらの形式も単一のモデルを使用します。モデルには 10 個のフィールドがあり、すべてのフィールドが必須 (必須) です。

フォーム A は(1,2,3,4,5) モデルの最初の 5 つのフィールドを使用し、フォーム B は残りの(6,7,8,9,10)フィールドを使用します。

そのため、送信するform Aと、必須フィールド(6,7,8,9,10)に入力するように求められます。同様に、フィールドを提供するform Bように求め(1,2,3,4,5)られます。フォームで使用できるフィールドのみが必須と見なされるようにするにはどうすればよいですか。

4

2 に答える 2

2

これはビュー モデルを使用することで可能になり、ビューが関連するビュー モデルと対話し、ビュー モデルがモデルと対話するようになります。ビュー モデルには、モデルに固有のフィールドのみが含まれることに注意してください。ここに手順があります

1)フィールド(1,2,3,4,5)で2つのビューモデルAを作成し、フィールド(6,7,8,9,10)でBを作成します

2)ビューは関連するフィールドをビューモデルに送信し、2つの方法でモデルに送信できます

a) ビュー A の送信時 最初の 5 つの値を挿入し、次の 5 つのフィールドにダミーまたはデフォルト値を挿入します。ビュー B が送信されたら、このレコードの最後の 5 つの値を実際の値で更新します。

b) 必須属性のない 10 個のフィールドすべてを含む別の ViewModelAB を作成します。この ViewModelAB のオブジェクトを作成し、両方のビュー モデル (つまり、A と B) の送信時にそれを埋めます。すべてのフィールドが入力されたら、実際のデータベース モデルに送信します

さらにサポートが必要な場合はお尋ねください

于 2012-05-18T10:51:22.183 に答える
0

必要なことを行うには、次の 2 つの方法が考えられます。

  1. すべてのフィールドを使用して 2 つのモデルを作成しますが、RequiredAttribute は各フォームで必要なものにのみ使用します。すべてのフィールドで、問題なく相互にマッピングできます。

  2. RequiredAttribute を使用する代わりに、RemoteValidationAttribute を使用してみてください。呼び出しを行うフォームに基づいて、必要なエラーをスローする必要があるかどうかを確認してください。

別のオプションは、クライアント側の検証を無効にして、サーバー側の検証のみを実行することです。つまり、モデルを永続化する前に、常にサーバー側 (ビジネス ルールを確認) の検証を行う必要があります。

于 2012-05-18T10:07:21.617 に答える