データが3/4モデルから来るビューを生成する方法に関するいくつかの提案が必要です。 データが3つのモデルから来ているイメージを添付しました。私は3つの異なるグリッドビューを使用し、異なるデータソースをバインドするWebフォームでこれを行っています。データが多くのモデルから来るビューを生成する助けが必要
しかし、今私はMVC 3で同じことをする必要があり、それを見つけるのは難しいです。 このようなビューを生成する方法について、誰かに私にガイドラインを教えていただければ幸いです。
データが3/4モデルから来るビューを生成する方法に関するいくつかの提案が必要です。 データが3つのモデルから来ているイメージを添付しました。私は3つの異なるグリッドビューを使用し、異なるデータソースをバインドするWebフォームでこれを行っています。データが多くのモデルから来るビューを生成する助けが必要
しかし、今私はMVC 3で同じことをする必要があり、それを見つけるのは難しいです。 このようなビューを生成する方法について、誰かに私にガイドラインを教えていただければ幸いです。
あなたは、「モデル」オブジェクトのプロパティとして、すべてのモデルを通過した後、彼らが使用する特定のモデルを通過し、各セクションをレンダリングするパーシャルビューを使用することができます。
@Html.Partial("ViewName", this.Model.SubModel)
または、子アクションを使用し、ページのビットに対して別のアクション方法を使用します。つまり、あなたの親ビューにこれを追加します。後者は
@Html.Action("ActionName", "ViewName")
利点は、あなたが他の部分より多く静的で、あなたのページの一部のためのキャッシュポリシー(あなたの行動上の[OutputCache]属性)を使用することができます。
Tuple()を使用すると、複数のレコードセット(モデル)をビューに返すことができます。 Tuple()はC#4.0の新機能です。 Tuple()についてのこの記事をご覧ください。
http://www.abhisheksur.com/2010/11/working-with-tuple-in-c-40.html
私は3つのプロパティ
public class CompositeModel
{
public MenuModel Menu {get; set;}
public OrderModel Order {get; set;}
public RestaurantModel Restaurant {get; set;}
}
を含むモデルを定義し、表示するには、このモデルを渡します。
partialViewsを使用してページにレンダリングしたり、Viewbagで必要なだけ多くのデータを渡すことができます。例:
ViewBag.Model1 = yourModel1;
ViewBag.SomeData = someOtherData;.....
そしてビューで、あなたがそれを使用yust:
@ViewBag.Model1
あなたも、AJAX呼び出しを介してデータを得ることができ、そして、あなたのサンプルのルックスで、私はそのアプローチを取るとjQueryテンプレートを使用しますビューをレンダリングする。