型号:(文件名:Class1.cs)
namespace Project
{
public class Class1
{
// attributes defined : title, date etc
}
public class Class1DBContext : DbContext
{
public DbSet<Class1> Class1Table{ get; set; }
}
public class Class2
{
// attributes defined : Name, Location etc
}
public class Class2DBContext : DbContext
{
public DbSet<Class2> Class2Table{ get; set; }
}
public class ParentView
{
public Class1 Class1{ get; set; }
public Class2 Class2{ get; set; }
}
}
在Class1Controller.cs文件中:
namespace Project.Controllers
{
public class Class1Controller : Controller
{
private Class1DBContext db = new Class1DBContext();
public ViewResult Index()
{
return View(db.Class1Table.ToList());
}
}
在Index.cshtml中:
Index view:
@model IEnumerable<Project.Models.ParentView>
@{
ViewBag.Title = "List";
}
<div style="float:left;">
<h1 style="color:Black;" >List</h1>
</div>
<div>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Class1.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Class1.Description)
</td>
</tr>
}
</div>
<div>
@{Html.RenderPartial("_PartialNew");}
</div>
部分视图代码中的(partialNew.cshtml):
@model IEnumerable<Project.Models.ParentView>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Class2.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Class2.Location)
</td>
</tr>
}
错误讯息:
传递到字典中的模型项的类型为'System.Collections.Generic.List 1[Project.Models.Class1]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [Project.Models.ParentView]'。
答案 0 :(得分:2)
更改要使用IEnumerable的类,例如:
public class ParentView
{
public IEnumerable<Class1> Class1{ get; set; }
public IEnumerable<Class2> Class2{ get; set; }
}
删除IEnumerable,使其显示为:
@model Project.Models.ParentView
答案 1 :(得分:1)
将Class1对象列表传递给需要ParentView对象列表的视图。这里的错误信息非常清楚。
你的问题到底是什么?
编辑 -
您需要将正确的类型返回到视图,可能是:
public ViewResult Index()
{
var pv = new ParentView();
pv.Class1 = db.Class1Table.ToList();
pv.Class2 = db.Class2Table.ToList();
return View(pv);
}