2009-06-16 24 views
2

私は新しいプロジェクトのためにasp.net MVCを使用したいと思っています。私はasp.netとウェブ上でさまざまな例を見ました。私はまだ答えは得られませんでした。異なるモデルの出力を単一のビューに結合する最良の方法は何ですか。たとえば、私のホームページには、最近の投稿のカタログ、場所、スナップショットが含まれます。これらは3つの異なるモデルから来るでしょう。それに応じてコンテンツを配置するために、ビュー内のすべてのものを含む単一のビューデータを作成しますか?asp.net MVCの単一ビューでの複数の出力の結合MVC

答えて

0

通常、このシナリオでは、複数のデータモデルクラスを集約する1つのビューモデルクラスを作成します。

私はビューとデータが2つの異なるオブジェクトセットである必要があると信じています。その前にコントローラクラスのデータ転送(例:データモデルクラスからビューモデルの通貨フォーマットの文字列への小数点の書式設定)ビューに送信されます。

8

あなたは自分のホームページのためのViewModelを作成...何かのような...

public class MyHomepageViewModel 
{ 
    public Categories MyCategories { get; set; } 
    public Locations MyLocations { get; set; } 
    public Snapshots MySnapshots { get; set; } 

    public MyHomepageViewModel(Categories categories, Locations locations, Snapshots snapshots) 
    { 
     MyCategories = categories; 
     MyLocations = locations; 
     MySnapshots = snapshots; 
    } 
} 

、その後、あなたが強く、このビューモデルにあなたのホームページを入力し、あなたがあなたのビューで必要なすべてにアクセスできるようになりますあなたはこのためにビューモデルを必要とする=)

+0

ありがとうございました...私は実際にViewModelが何であるかを実際に取得します。 – kdmurray

+0

これはコントローラの置き換えになりますか?もしそうなら、それはasp.netフォルダ構造のどこに行きますか? ViewModelsという新しいフォルダに? – George

+1

@George ...これはコントローラを置き換えることはできません。これは、コントローラのアクションによってビューを生成するために使用されます。フォルダ構造のどこにでも置くことができます。通常、ViewModelsフォルダに配置します。 –

3

public class HomeViewModel { 
    public IList<Category> Categories; 
    public IList<Location> Locations; 
    public IList<Snapshot> Snapshots; 
    public IList<Post> Recent; 
} 

あなたのビューが強く型付けされている必要があります。

<%@ Page Inherits="System.Web.Mvc.ViewPage<HomeViewModel>" %> 

<!-- <% var categories = Model.Categories %> --> 
関連する問題