2012-05-11 25 views
5

私は、コントローラからデータを取得するグラフやその他のテキストフィールドがたくさんある剃刀ビューを持っています。私はViewModelをコントローラからビューに渡して、関連するコンテンツを解析して表示することを考えています。ASP.NET MVC 3 - ViewModelベストプラクティス

上記のアプローチがMVCでこのような問題を解決するベストプラクティスであれば誰でもお勧めできますか?

ViewModelクラスは以下のようになります。私はViewModelを返すようにしようとしている

public class ViewModelDemo 
{ 
    public MyChart chart {get;set;} 
    public string LeftContent {get;set} 
    public string bottomContent {get;set;} 
    public ChartLeged legent {get;set} 
    ...... 
} 

public class MyChart 
{ 
    public List<int> xAxis {get;set} 
    public List<int> yAxis {get;set;} 
    ...... 
} 

理由は、さまざまなデータを持っているページの一部が存在しているということです。

+0

は、それが入れ子になったのviewmodelsを持っていいのですか?私も面白いし、同じことをする(私はネスティングを意味する)。私はいくつかの論理的な部分を持つページを持っているだけでなく、入れ子にされたviedmodelの1つだけが(ajaxまたはポストバックの要求に応じて)再取得することができます。だから私はあなたが正しいことを願っています) –

+1

私たちは良い方法について話しているので、フレームワーク/言語と同じ命名規則を使用することをお勧めします。この場合、.NET/C#ではパブリックプロパティに適切なケーシングが使用されます。だから、プロパティ名を 'Chart'、' BottomContent'、 'Legend'(正しいスペル)、' XAxis'、 'YAxis'に変更する必要があります。 – Omar

答えて

2

解決策は正しいと思います。

もう1つのアプローチは、大きなカミソリのビューをより小さなビューモデルに分割し、それぞれがより簡単なビューモデルを使用することです。これは、可読性、責任の分離、eccのために便利です。

3

絶対に。 ViewModelは、この問題に対する完全に受け入れ可能なソリューションです。他のオプションは、ドメインモデルからいただい 用に別のビューモデルタイプを作成することです

(便利な無料サンプル中)アクション帳にパレルモの優れたMVCのセクション12.1.5を参照してください。特殊なクラスを作成します。 の場合は1つのビューしか作成されません。しかし、私たちが好きなようにそのタイプを形作ることができ、 ビューでビューモデルを形作ることができます。 分割ビューモデルの利点は、ビューがドメイン モデルに影響を与えないことです。それほど複雑でないアプリケーションでは、この分離は不要であり、設計を過度に複雑にする。 。 ビューの複雑さが増すにつれて、ビューモデルとドメインモデルが に分かれていない限り、ビューのデザインはドメインモデル にますます影響を与えています。あなたが意味

http://www.manning.com/palermo/Samplechapter12.pdf

関連する問題