需要帮助来生成数据来自许多模型的视图

时间:2011-09-09 08:50:51

标签: model-view-controller asp.net-mvc-3

我需要一些关于如何生成数据来自3/4模型的视图的建议。 我附上了一个图像,数据来自3个模型。我已经使用3种不同的网格视图和绑定不同的数据源在Web表单中完成了这项工作。

但是现在我必须在MVC 3中做同样的事情并且发现它很难。 如果有人能给我一些关于如何产生这种观点的指导,我真的很感激。

enter image description here

4 个答案:

答案 0 :(得分:2)

我将定义一个包含3个属性的模型

public class CompositeModel
{
   public MenuModel Menu {get; set;}
   public OrderModel Order {get; set;}
   public RestaurantModel Restaurant {get; set;}
}

将此模型传递给视图。

答案 1 :(得分:0)

您可以将所有模型作为“模型”对象的属性传递,然后使用部分视图渲染每个部分,并通过他们使用的特定模型。

@Html.Partial("ViewName", this.Model.SubModel)

或者,使用子操作,并为页面的位置设置单独的操作方法。即将其添加到父视图中:

@Html.Action("ActionName", "ViewName")

后者的优势在于您可以对页面的某些部分使用缓存策略(对您的操作[OutputCache]属性),这些部分比其他部分更加静态。

答案 2 :(得分:0)

您可以使用Tuple()将多个记录集(模型)返回给视图。 Tuple()是C#4.0中的一个新功能。查看有关Tuple()的这篇文章。

http://www.abhisheksur.com/2010/11/working-with-tuple-in-c-40.html

答案 3 :(得分:0)

您可以使用partialViews,并在页面上渲染它们,或者您可以通过Viewbag传递尽可能多的数据。例如:

ViewBag.Model1 = yourModel1;
ViewBag.SomeData = someOtherData;.....

然后在你看来你必须使用它:

@ViewBag.Model1

您甚至可以通过ajax调用获取数据,并且通过示例的外观,我将采用该方法并使用jquery模板来呈现视图。