尝试加载视图时收到此错误消息:
The model item passed into the dictionary is of type
'System.Data.Entity.Infrastructure.DbQuery`1[<>f__AnonymousType0`2[System.Int32,System.String]]',
but this dictionary requires a model item of type
'System.Collections.Generic.IEnumerable`1[HelloWorld.Models.P]'.
可能是因为没有将正确的类型从控制器传递给视图吗?
这是模型:
public class P
{
[Key]
public virtual int ImportID { set; get; }
public virtual string MicroName { set; get; }
}
这是 DBContext 定义:
public DbSet<P> Ps { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//REMAPPING TABLE NAMES
modelBuilder.Entity<P>()
.ToTable("SomeTable_With_Really_LongName_tbl");
base.OnModelCreating(modelBuilder);
}
这是控制器动作:
public ActionResult ListP()
{
var model = (from p in _db.Ps
select new
{
p.ImportID,
p.MicroName
}).Take(10);
return View(model);
}
这是视图:
@model IEnumerable<HelloWorld.Models.P>
@{
ViewBag.Title = "List P";
}
<h2>List P</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
ImportID
</th>
<th>
MicroName
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ImportID)
</td>
<td>
@Html.DisplayFor(modelItem => item.MicroName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
有任何想法吗?