繁体   English   中英

使用局部视图在一个视图中显示多个模型

[英]Display multiple models in a single view using partial views

我需要在单个视图index.cshtml中显示来自两个表(学生和成绩)的数据。

我有两个局部视图_StudentPartial和_GradePartial都是强类型的。 我到处搜索,每个人都说应该使用我的父模型。 因此,我在下面创建了一个名为MyViewModels的父模型,但似乎无法正常工作。 正确的方法是什么?

我的模特:

public class MyBigViewModels{
      public IEnumerable<Users.Models.Student> Student      { get; set; }
      public IEnumerable<Users.Models.Grade>   Grade       { get; set; }
}

我的观点():

@model MyApp.Models.MyBigViewModels

// render content for Student 
@foreach (var item in Model)
{
  @Html.Partial("_StudentPartial", item)
}

// Render content for Grades
@foreach (var item in Model)
{
  @Html.Partial("_GradePartial", item)
}

我的部分观点

// _StudentPartial 
@model IEnumerable<MyApp.Models.Student>

@foreach (var item in Model) {
 @Html.DisplayFor(modelItem => item.name)
}


 // _GradePartial
@model IEnumerable<MyApp.Models.Grade>

@foreach (var item in Model) {
 @Html.DisplayFor(modelItem => item.letterGrade)
}

“ /”应用程序中的服务器错误

传递到词典中的模型项的类型为'System.Data.Entity.Infrastructure.DbQuery 1[MyApp.Models.Students]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [MyApp .Models.MyBigViewModels]”。

在您的外部视图中:

@foreach (var item in Model)

没有道理。 您的模型不可枚举。 你要 :

@foreach (var item in Model.Students)
{
   @Html.Partial("_StudentPartial", item)
}

// Render content for Grades
@foreach (var item in Model.Grades)
{
   @Html.Partial("_GradePartial", item)
} 

而您的零件只需要一件物品:

@model MyApp.Models.Student

@Html.DisplayFor(modelItem => item.name)

要么,要么不要在您的主页中循环,然后将可枚举数发送到您的部分中进行循环。 本质上,当您只需要一个时,您就有2个foreach。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM