asp.net-mvc-3 – 带有EF 4.1和EntityState.Modified的MVC3
发布时间:2020-12-16 04:19:11 所属栏目:asp.Net 来源:网络整理
导读:使用MVC3更新对象 我有一个可以修改的模型,请看下面的示例: [HttpPost]public ActionResult Edit(Company c){ if (ModelState.IsValid) { db.Entry(c).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(c
使用MVC3更新对象
我有一个可以修改的模型,请看下面的示例: [HttpPost] public ActionResult Edit(Company c) { if (ModelState.IsValid) { db.Entry(c).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(c); } 该模型具有未在视图中显示的其他字段,并且不能由用户修改,但是当我单击提交按钮时,未在视图中显示的字段设置为null. 我可以以某种方式让EF知道不修改某些字段吗?谢谢. 解决方法
通常最好不要直接绑定到实体对象,而是创建一个编辑模型并绑定到该模型.
毕竟…什么是阻止有人发布回来的价值你不想用这种方法改变? 这里的主要问题是mvc模型绑定在上下文之前更改模型中的属性,因此实体框架不知道哪些值已更改(因此应更新哪些值) 您已经使用db.Entry(c)稍微减轻了这一点.State = EntityState.Modified;但这告诉实体框架整个记录已经更新. 我通常会做以下事情: >首先绑定到专门用于此控制器的模型 第3步有点乏味,因此考虑使用像automapper这样的工具来简化操作 编辑: [HttpPost] public ActionResult Edit(Company c) { if (ModelState.IsValid) { Company dbCompayObjct = new Company { companyId = c.companyId }; db.Company.Attach(dbCompayObjct); dbCompanyObjct.CompanyName = c.CompanyName; dbCompanyObjct.City = c.City; db.SaveChanges(); return RedirectToAction("Index"); } return View(c); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net – 如何在Web App和Windows Form Applic
- asp.net – iTextSharp与iText
- ASP.NET MVC中<%:和<%=有什么区别?
- asp.net-mvc – 清除模型后为什么文本框不清除
- ASP.NET MVC/C++#:我可以避免在单行C#条件语句中
- asp.net – 如何在MVC3 .net中实现DotNetOpenAut
- asp.net-mvc – 模型单元测试能否真正独立,如何[
- asp.net-core-mvc – 如何创建从HttpContext.Tra
- ASP.Net 4中ClientIDMode的正确设置是什么,以获得
- 在使用ASP.NET MVC的Action方法中使用哪种重定向
热点阅读