我使用Visual Studio 2015和MVC5。
我尝试用这段代码构建一个表的编辑视图,我得到一个我无法解决的错误
@Html.HiddenFor(model => model.GHE_CORRELATIVO)*@
<div class="form-group">
@Html.LabelFor(model=> model.COP_CORRELATIVO,"COP_CORRELATIVO")
@Html.DropDownList("COP_CORRELATIVO", null, htmlAttributes: new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(model => model.GHE_DESCRIPCION, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.GHE_DESCRIPCION, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.GHE_DESCRIPCION, "", new { @class = "text-danger" })
</div>
</div>
DbUpdateConcurrencyExcepcion 当控制器收到数据时。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "COP_CORRELATIVO,GHE_CORRELATIVO,GHE_DESCRIPCION")] GRUPO_HERRAMIENTA gRUPO_HERRAMIENTA)
{
if (ModelState.IsValid)
{
db.Entry(gRUPO_HERRAMIENTA).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.COP_CORRELATIVO = new SelectList(db.CLASIFICACION_OPCION, "COP_CORRELATIVO", "COP_DESCRIPCION", gRUPO_HERRAMIENTA.COP_CORRELATIVO);
return View(gRUPO_HERRAMIENTA);
}
我的表由两个pk,ghe_correlativo(自己的)和cop_correlativo(FK)组成,脚手架只生成文本输入,但我需要用下拉列表编辑cop_correlativo字段。
模型的结构:
public partial class GRUPO_HERRAMIENTA
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public GRUPO_HERRAMIENTA()
{
this.PERFIL_INTRANET = new HashSet<PERFIL_INTRANET>();
}
public int COP_CORRELATIVO { get; set; }
public int GHE_CORRELATIVO { get; set; }
public string GHE_DESCRIPCION { get; set; }
public virtual CLASIFICACION_OPCION CLASIFICACION_OPCION { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<PERFIL_INTRANET> PERFIL_INTRANET { get; set; }
}
我做错了什么?
答案 0 :(得分:0)
在调试中,确保在后期操作中设置了所有参数,特别是COP_CORRELATIVO
,这是主键。
对于测试目的,而不是db.Entry(gRUPO_HERRAMIENTA).State = EntityState.Modified;
使用此:
db.GRUPO_HERRAMIENTAS.Attach(gRUPO_HERRAMIENTA);
db.Entry(gRUPO_HERRAMIENTA).Property(i => i.COP_CORRELATIVO ).IsModified = true;
db.Entry(gRUPO_HERRAMIENTA).Property(i => i.GHE_CORRELATIVO ).IsModified = true;
db.Entry(gRUPO_HERRAMIENTA).Property(i => i.GHE_DESCRIPCION ).IsModified = true;