0

これが私の問題です:

制御された一連のユーザーを含むイントラネット asp.net mvc 3 アプリケーションがあります。大量の情報を含む Person クラスがあり、最初にロードされてセッションに保存されます。このオブジェクトのデータ/編集は、多くの画面にまたがっています。基本的に、各画面は Person のデータのサブセットです。

asp.net mvc に組み込まれているモデル バインディングを利用しようとしています。各画面からフォーム データをバインドし、サービス オブジェクトを使用してセッション オブジェクトを更新するデータ クラスを作成する必要がありますか?

以下の例: DxFormData には個人データのサブセットが含まれており、このメソッドのパラメーターとしてのみ使用されます。

 public ActionResult Dx(DxFormData data)
 {
    // Update current session Person object with data passed in if modelstate is valid
    var viewModel = this.GetDxViewModel();        
    return View(viewModel);
 }

public class DxForm Data
{
    public string AdmitDx { get; set; }
    public string PrinDx { get; set; }
}

このアプローチについての考えと、より良い解決策が利用できるかどうかを探しています。私が見る問題は、人物クラスにすべてのデータが含まれており、そのデータのサブセットを使用して別のクラスを作成していることです。明らかに、プロパティを複製します。

補足: バインディングのためにセッション担当者を返すカスタム モデル バインダーを作成しました。ただし、バインドしようとすると、継続的にエラーが発生します。

4

1 に答える 1

0

このアプローチに問題はありません。クラスをアクションパラメータとして使用しようとするとParent、各フォーム送信アクションでモデルが完全に入力されていないため検証エラーが発生します。この場合はビューモデルを使用する必要がありますが、残念ながらプロパティの重複は避けられません。

于 2012-11-07T16:44:32.373 に答える