2011-08-12 15 views
0

MVCの新人であることから少し問題があります。私は私のビューモデルオブジェクトのコレクションに依存するページを開発しています。すべての良い。しかし、ページには比較的複雑な機能があるため、メインドメインモデルの他のオブジェクトやコレクションをUIに表示する必要があります。軽量のオブジェクトよりはるかに軽い。これを達成する最良の方法は何ですか?Viewmodelのコレクションとその他のオブジェクト

+0

コントローラで実行します。 viewmodelはDTOでなければならず、ロジックは含まれていません。 – Jason

+0

私のviewmodelクラス定義はDTOの上にレイヤーとして機能します(ロジックは含まれていません)。ビューに配信するにはどうすればよいでしょうか? ViewBag経由またはサーバー側のマークアップブロック、つまり@ {..}? – MaRk

+0

モデルにプロパティを追加し、コントローラのプロパティを設定します。 – Jason

答えて

0

私が行うのは、特定のビュー/アクションで表示する必要のあるデータをカプセル化するカスタムクラスを作成することです。したがって、管理者エリアのユーザーコントローラーでは、ユーザービジネスオブジェクトのリストを保持するAdminUserIndexViewModelクラスがあります。私はこのクラスに表示する必要がある他のデータも入れます。

自分のAdminUserEditViewModel(自分の管理領域、ユーザーコントローラ、編集アクションに対応する)には、必要に応じて変更するためのロールが添付された1つのユーザークラスがあります。ユーザー設定や設定などのその他の情報を入力する必要がある場合は

+0

OK、それは最高のソリューションのように聞こえる...ビューモデルのファサードクラスの一種。 – MaRk

+0

あなたはすでにビューモデルを使用していると言っています。これは定義によるビューモデルです。 –

+0

はい、あなたは正しいですアダム、混乱のために申し訳ありません。私はそれが混乱していると思う、私は主なエンティティオブジェクトのコレクションでビューを入力していた。私はそれをビューモデルにしていました。 – MaRk

0

現在作業しているビューモデルの一部でない場合は、Html.Actionを使用して別のコントローラメソッドを呼び出して、コントローラメソッドを使用して別のインラインビューをレンダリングできます。

+0

OKありがとうございますが、達成しようとしているものに合うかどうかはわかりません。私は、ドロップダウンを埋めるためのデータ、すなわちキーの値のペアのソートの後にいる。しかし、あなたの提案は私のUIの他の側面について考えさせてくれました! – MaRk

+0

その後、ネット上のコンボボックスのためにhtmlヘルパーのいくつかを使用するか、あなたの現在のビューモデルからそれらを形成するためにあなた自身のものを書いてください。 –

関連する問題