ViewModel
のアイデアはMVC
にあると思いますが、更新と削除を行うと、コントローラに投稿するための別個のモデルがあるように思えます。私は、既定の剃刀コントローラがViewBag
を使用して選択リストを保持していることに気付きました。投稿されたデータをMVCでどのようにモデル化する必要がありますか?
不要なデータが取り除かれているため、ViewModel
(実際にはドメインエンティティ)はリターントリップで再利用できると思います。しかし、ViewBag
に頼っているように見えるのは、ビューモデルにSelectlist
などを入れることができるため、ビューモデルを使用するときに意味をなさないと思われます。
私の質問は、異なる「投稿データ」モデルを作成するためにどのようなパターンがありますか? (この用語はEspositoのMVC 2の本から得ました)そして、投稿されたデータモデルはビューモデルにどのように関係すべきですか?たとえば、投稿モデルにビューモデルを含めるようにします。私はMVC
に新しく、web-forms
の背景から来ていません。私は本当にコントローラに送信されるデータをモデル化するための最良のパターンを理解したいと思います。
'ViewModel'を' DomainModel'にマッピングする必要があるのはなぜですか?なぜ 'ViewModel'の代わりに' DomainModel'を私たちのアクションに渡さないのでしょうか? –
@Miroprocessor、ビューモデルを最初にこのビューに渡したためです。このビューには、このビューモデルの入力フィールドのみが含まれています。コントローラ・アクションは、ビュー・モデルのみをビューとの間で受け渡しする必要があります。あなたがコントローラのアクションを持っている場合、DomainModelを引数として取ると、このドメインモデルのほとんどのプロパティはPOSTされず、モデルバインダーはそれらを解決する方法を知らないため、nullになります。 –
@ダリン、お返事ありがとうございます。あなたが示したパターンは、私が今までに聞いたパターンです。それでも、ビューモデルに含めることができるControllerModelを作成した場合、実際にコントローラを単純化するように思えます。それから、私はM、V、Cをモデルにしたでしょうか?これは悪い考えですか、それともあなたのようなことを試しましたか?再度、感謝します。 – Benjamin