0

最近、MVC 4/エンティティ プロジェクトの既存のモデルに、監査目的でいくつかのフィールドを追加しました。これらのフィールドを編集ページに表示する必要はありません。ただし、これらはモデルの必須フィールドです。

現状では、編集ページは引き続き機能しますが、コントローラー側では、アイテムに実際に設定されている必須フィールドがビューに出力されず、編集ページが表示されたときに再送信されないため、ModelState.IsValid チェックが失敗します。提出した。

これを修正する簡単な組み込みの方法はありますか、そうでない場合、このシナリオのベストプラクティスは次のうちどれですか? さらにオプションはありますか?

1) 情報を保持するために、ビューに非表示のフィールドを設定します (このオプションのファンではありません。データを渡しすぎます)。

2) コントローラーで、送信時に、最初にモデルを ID でロードし、ビューに存在するフィールドに基づいて個々のパラメーターを設定します (余分な不要な作業のようです)

3) それ自体をパラメーターとして受け取り、デフォルト以外の値を取得して新しいオブジェクトを返すモデルのコンストラクターを作成します。基本的に合流。(私が思うに最善だと思いますが、まだ余分な作業がたくさんあります)

4) ???

4

2 に答える 2

2

ベスト プラクティスは、ビュー内でドメイン モデルを使用しないことです。ビューに必要な id とフィールドのみを含むビュー モデル クラスを作成します。このモデルをビューに渡します。フォーム送信アクションのパラメータ タイプを新しいビュー モデルに合わせて変更します。これにより、隠しフィールドを使用せずにモデルの検証に合格します。アクション メソッドでは、ビュー モデル クラスの id プロパティを使用してデータベースからオブジェクトを取得し、必要に応じてフィールドを更新できます。

それが理にかなっていることを願っています。

于 2013-04-01T04:02:54.577 に答える