我在详情视图页面上收到此错误:
The model item passed into the dictionary is of type 'System.Data.Entity.DynamicProxies.cpd_certificates_65AF30842281867E2F4F6A1026590271109C12A85C8175394F14EF6DE429CBC7', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[cpd.Models.cpd_certificates]'.
这是我的控制器:
public class Default8Controller : Controller
{
//
// GET: /Default8/
private cpdDbContext db = new cpdDbContext();
public ActionResult Index()
{
return View(db.CPD.ToList());
}
//
// GET: /Default8/Details/5
public ActionResult Details(int id)
{
cpd_certificates cpd_ = db.Cert.Find(id);
return View(cpd_);
}
以下是我的详细信息视图:
@model IEnumerable<cpd.Models.cpd_certificates>
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<table>
<tr>
<th>
certificateNo
</th>
<th>
Mark
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CertificateNo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Mark)
</td>
</tr>
}
</table>
以下是cpd_certificates模型:
public class cpd_certificates
{
[Key]
public int CertificateNo { get; set; }
public int QuizNo { get; set; }
public DateTime? DateReceived { get; set; }
public DateTime? DatePaid { get; set; }
public string Mark { get; set; }
public int? AccreditationNo { get; set; }
public int? ID { get; set; }
public virtual cpd_recipients Recipients { get; set; }
}
我有两个型号,我可以在我的索引上查看列表。我打算当我点击详细信息链接时,它会带我获取所获得的证书和其他模型/表格中的考试的详细信息。因此,简而言之,两个模型具有CPD的PK ID和Cert上的FK ID。索引页面只显示个人信息,此页面没问题。 单击“详细信息”时,将显示其他模型/表数据,即该人员的许多证书。
答案 0 :(得分:0)
您应该将模型作为IEnumerable条目列表传递给视图,而不是将其作为单个条目传递。 在您的控制器中,您希望显示一个条目详细信息,但在视图中,要显示所有条目的详细信息。首先,您应该决定要显示的内容。 要显示一个条目详细信息,请使用:
控制器:
public ActionResult Details(int id)
{
cpd_certificates cpd_ = db.Cert.Find(id);
return View(cpd_);
}
视图:
@model cpd.Models.cpd_certificates
@{
ViewBag.Title = "Details";}
<h2>Details</h2>
<table>
<tr>
<th>
certificateNo
</th>
<th>
Mark
</th>
<th></th>
</tr>
<tr>
<td>
@Html.DisplayFor(model => model.CertificateNo)
</td>
<td>
@Html.DisplayFor(model => model.Mark)
</td>
</tr>
}
</table>
如果要列出所有条目,请使用:
控制器:
public ActionResult List()
{
cpd_certificates cpd_ = db.Cert.ToList();
return View(cpd_);
}
视图:
@model IEnumerable<cpd.Models.cpd_certificates>
@{
ViewBag.Title = "List";
}
<h2>List</h2>
<table>
<tr>
<th>
certificateNo
</th>
<th>
Mark
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CertificateNo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Mark)
</td>
</tr>
}
</table>