如何在MVC 3 ASP.NET的共享布局页面上使用两个模型?

时间:2012-12-28 20:56:09

标签: asp.net asp.net-mvc asp.net-mvc-3 razor model

我有一个主要的布局页面,它有一个基本的表格设置。我有一个主内容单元格,我用它来放置RenderBody()。我有产品列表使用Products数据库,我有一个右侧需要访问用户数据库的菜单。如何使用“主要内容”单元格中的产品模型列出我的产品,并使用用户模型在菜单单元格中列出信息?

2 个答案:

答案 0 :(得分:2)

我使用的唯一方法(但我对它的最佳实践状态并不完全有信心)是为页面创建一个模型,包括(在您的情况下)product模型和{{ 1}}模型。在控制器中填充这些模型,然后像在视图中一样访问内部模型。

答案 1 :(得分:2)

您可以使用partials来渲染内容部分。

想象一下,您的网页使用此模型:

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" )

后一种方法的优点是可以使页面模型保持相对干净,这样就不必包含显示页面所需的所有数据。