2009-06-17 9 views
8

私はプロフェッショナルASP.NET MVC 1.0の本を読んでいるだけでなく、ViewDataの代わりにViewModelを使用してコントローラからViewsにアクセスすることについて話し合っています。しかし、それからViewDataから何かを得る以外の方法がない場合、ViewDataの非常に多くの例が厳しいシナリオで使用されています。しかし、私はPro ASP.NET MVC Frameworkのような本を読んでいます。彼が話すのはViewDataだけで、ViewModelについては何も書いていません。 ViewModelは非常に新しいコンセプトなのでしょうか?ViewDataを使用するかどうかViewDataを使用するかどうか

ViewModelははるかに優れたアプローチですが、それは堅実な選択肢ですか?私はViewDataがすぐにあなたに利用可能であることを意味します ViewModelではないHtmlHelperオブジェクトなど。または、たとえばカスタムコントロール(http://www.codeproject.com/KB/custom-controls/MVCCustomControls.aspx)で使用します。だから私は別の目標や何に応じて両方のコンボを使用するのですか?どのような理由でExtensionメソッドのViewModelにアクセスしたいのですが?私はここでどの道を取るべきかについて迷っている。 ViewDataは強く型付けされていませんが、型を指定するようにビューを設定できるため、ViewData型を作成できますが、私は不思議です。 ViewDataは非常に多くサポートされていますが、ViewModelは、抽象的で分割された型になっているだけでなく、型付けされていることもわかります。私は、HtmlHelperクラスのような他のオブジェクトから簡単にアクセス可能なViewDataのような特定のデータを取得する必要があるシナリオでは、自分自身を短くしたくありません。

思考?基準?経験?私はちょっと離れているのですか、コンボを使用していて、コントローラからビューにデータを送信するだけでなく、何か他の状況でもViewDataを使用しますか?

また、ViewModelをコントローラで使用していない場合、ViewModelを使用しているため、ViewModelを使用していると思われるので、ViewDataを何も設定していないので目的がありませんあなたのコントローラからは、その時点では使用できません。私は誰か道を混乱させていますか?自分自身のことを混乱させているのは確かです。

答えて

2

まあ、ViewDataはかなり簡単に実装できるメソッドです。しかし、そこでは通常、良いことではない文字列リテラルパッシングをたくさんしています。セッション変数で行う文字列定数を使用することでそれを解決できますが、ここではViewModelがはるかに優れたアプローチだと思います。 ViewDataを使用できるときはいつでも、ViewModelを使うこともできます。 ViewModelはドメインオブジェクトである必要はありません。ドメインオブジェクトだけでなく、ビューに固有のいくつかの追加のプロパティを持つヘルパークラスにすることもできます。それがそこにある理由です。 ViewModelを使用すると、OOの観点からコンパイラがわかりやすくなります。キーを辞書に渡すよりもはるかにクリーンです。

私はここのMVCは良いアプローチを提供すると思います。それは、「すぐにやる」とクリーンなアプローチを必要とする人にとっては、すばやく汚い(必ずしも悪いとは限りません)。どちらも使いやすいです。

Scott GurthieのASP.NET MVCチュートリアルを読んでいない場合は、私は非常にお勧め:

http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx

+0

私はViewData.Modelについて話していません。私はあなたのモデルから特定のオブジェクトを取得する作業を行うViewとController "ViewModels"の間にあるクラスの追加層について話しています。コントローラはModelレイヤーのアイテムを取得するコントローラの代わりにそれらを使用できます。 – PositiveGuy

1

は今モデルは便利なプログラミングパターンとして考えられている表示します。例えば、Stephen Waltherの記事を読んでください。ASP.NET MVC Tip #50 – Create View Models

関連する問題