【问题标题】: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" )
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 2018-03-22
      相关资源
      最近更新 更多