我们可以创建一个单一的剃刀视图来创建编辑操作吗?
如果是的话,请问我们如何实现这一目标?
解决方法
你当然可以。
在发布时,请检查您的控制器主键是否具有值0,然后插入,否则更新。
“创建和编辑”视图应该相同。
记住要包括:
@Html.HiddenFor(model=>model.ID)
在你看来
例如:
模型:
public class DescriptionModel { [Key] public int ID { get; set; } public string Description { get; set; } }
CreateEdit.cshtml:
@model DescriptionModel @using (Html.BeginForm("CreateEdit")) { @Html.HiddenFor(model=> model.ID) @Html.EditorFor(model=> model.Description) <input type="submit" value='Submit' /> }
说明模型控制器:
public ActionResult Create() { return View("CreateEdit",new DescriptionModel()); } public ActionResult Edit(int id) { return View("CreateEdit",db.DescriptionModels.Find(id)); } // Submit and add or update database [HttpPost] public ActionResult CreateEdit(DescriptionModel model) { if (ModelState.IsValid) { // No id so we add it to database if (model.ID <= 0) { db.DescriptionModels.Add(model); } // Has Id,therefore it's in database so we update else { db.Entry(model).State = EntityState.Modified; } db.SaveChanges(); return RedirectToAction("Index"); } return View(model); }