我需要一些关于如何生成数据来自3/4模型的视图的建议。 我附上了一个图像,数据来自3个模型。我已经使用3种不同的网格视图和绑定不同的数据源在Web表单中完成了这项工作。
但是现在我必须在MVC 3中做同样的事情并且发现它很难。 如果有人能给我一些关于如何产生这种观点的指导,我真的很感激。
答案 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模板来呈现视图。