【问题标题】:How do I use two models on a shared layout page in MVC 3 ASP.NET?如何在 MVC 3 ASP.NET 的共享布局页面上使用两个模型?
【发布时间】:2012-12-28 20:56:09
【问题描述】:
我有一个包含基本表格设置的主布局页面。我有一个用于放入 RenderBody() 的 Main Content 单元格。我有使用 Products 数据库的产品列表,并且右侧有一个需要访问 User 数据库的菜单。如何在 Main Content 单元格中使用 products 模型列出我的产品,并在 Menu 单元格中使用 users 模型列出信息?
【问题讨论】:
标签:
asp.net
asp.net-mvc
asp.net-mvc-3
razor
model
【解决方案1】:
我使用的唯一方法(但我对它的最佳实践状态并不完全有信心)是为页面创建一个模型,其中包括(在您的情况下)product 模型和 user 模型.在控制器中填充这些模型,然后像在视图中一样访问内部模型。
【解决方案2】:
您可以使用部分渲染内容部分。
假设您的页面使用此模型:
public class PageModel {
public string Title { get; set; }
public ProductListModel Products { get; set; }
}
然后您可以渲染局部视图并为此传递模型:
@Html.Partial( "name of partial view", Model.Products )
一种性能成本稍高的方法是调用一个动作来渲染局部视图:
public class ProductsController {
public ActionResult List() {
var model = new ProductListModel();
return View( "your partial view", model );
}
}
在你看来:
@Html.Action( "list", "products" )
后一种方法的优点是您可以保持页面模型相对干净,因此它不必包含显示页面所需的所有数据。