2
我在mvc应用程序中有实体模型。我有两个表:绑定到复杂对象列表
引擎:ID,名称,零件
部分:身份证,ENGINEID,名称,价格
有一到这两个表之间的多对多关系。
在视图:
@model Engine
<input type="hidden" name="Id" value="@Model.Id" />
<input type="text" name="Name" value="@Model.Name" />
@for(var part in Model.Parts)
{
<input type="hidden" name="Parts.Index" value="@guide" />
<input type="hidden" name="Parts[@guide].Id" value="@part.Id" />
<input type="text" name="Parts[@guide].Name" value="@part.Name" />
<input type="text" name="Parts[@guide].Price" value="@part.Price" />
}
在控制器:
public ActionResult Edit(int id)
{
var model = context.Engines.FirstOrDefault(x=>x.Id == id);
return View("Engine", model);
}
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var model = context.Engines.FirstOrDefault(x=>x.Id == id);
UpdateModel(model);
context.SaveChanges();
}
我加入,并在飞行中取出部件。当我发布时,我有model.Parts中的零件列表。他们都添加了实体状态。我希望Id具有EntityState.Modified的所有部分和那些被删除的部分都必须具有EntityState.Deleted,并且添加的对象应该具有EntityState.Added。可能吗? (EF版本4.0)
你能举个例子吗? – karaxuna
你可以从这里开始(http://brendan.enrick.com/post/Custom-Model-Binders-in-ASPNET-MVC.aspx)或这里(http://mikehadlow.blogspot.com/2010/04/定制ASPNET-MVC模型 - 粘合剂 - for.html) – Dima