我需要在单个视图index.cshtml中显示来自两个表(学生和成绩)的数据。
我有两个部分观点_StudentPartial& _GradePartial都是强类型的。我google了一下,每个人都说应该使用我的父模型。所以我在下面创建了一个名为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]'。
答案 0 :(得分: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。