我还在开始学习ASP.Net MVC请帮忙!所以我在模型中有两个具有这种关系的控制器:
public class QualificationMap
{
public int Id { get; set; }
public virtual ICollection<QualificationBatch> QualificationBatches { get; set; }
}
public class QualificationBatch
{
public int Id { get; set; }
public int QualificationMapId { get; set; }
public virtual QualificationMap QualificationMap { get; set; }
}
目前我有来自这些模型的通用脚手架CRUD,在QualificationMaps视图的索引中,我试图获取一行的id并使用以下代码将其路由到另一个控制器:
<td nowrap>
@Html.ActionLink("Add Batch", "Create", "QualificationBatches", new { id = item.Id }, null) |
</td>
然后我尝试在QualifiationBatchesController的Create操作中使用QualificationMapIndex中的id,其中的内容可能过于简单,如
public ActionResult Create(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
QualificationMap qm = db.QualificationMaps.Find(id);
if (qm == null)
{
return HttpNotFound();
}
return View(qm);
}
解决方案构建正常,直到我点击上面提到的ActionLink并返回此错误:
传递到字典中的模型项是类型的 &#39; System.Data.Entity.DynamicProxies.QualificationMap _ ***,但是这个 字典需要类型的模型项 &#39; MySolutionName.Models.QualificationBatch&#39;
你可能已经明白了我弄错了但我完全不知道这样做的正确方法。
创建操作中的某些输入字段是否可能基于您从其他控制器中单击的内容?
修改
我的错误如下所示,我的Create.cshtml基于@model QualificationBatch而不是@model QualificationMap。但我还没有弄清楚如何使用ViewModels
做我最初想要的事情