1

我需要在单个视图 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.IEnumerable1[MyApp.Models.MyBigViewModels]”。

4

1 回答 1

2

在你的外表看来:

@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。

于 2014-07-25T20:01:20.880 回答