2012-11-21 26 views
0

我得到我的详细信息该错误的浏览页面:错误页:传递到字典的模型产品类型“System.Data.Entity.DynamicProxies

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和FK ID的PK ID。索引页面只显示个人信息,此页面没有问题。 单击详细信息时,会显示其他模型/表格数据,即该人员的许多证书。

+0

可以显示@莫希特 - 阿罗拉我已经编辑和posetd模型来回证书cpd.Models.cpd_certificates模式 –

+0

。 – Sithelo

回答

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> 
+0

请如何将它作为IEnumerable项列表传递。 – Sithelo

+0

这是我在这行上得到的错误** db.Cert.ToList()**:不能将类型'System.Collections.Generic.List '隐式转换为'cpd.Models.cpd_certificates' – Sithelo

+1

不会将项目列表传递给期望一个特定项目的视图。它将被解决。 –

相关问题