我有一个或多或少的标准模型:
public class Project { public int ID { get; set; } //... some more properties public DateTime StartDate { get; set; } public int Duration { get; set; } }
如果用户修改了StartDate或项目持续时间,我必须调用一个函数来更新模拟.为了实现这一点,我想检测控制器中字段StartDate和Duration的状态变化.
像这样的东西:
if(project.StartDate.stateChange() || project.Duration.stateChange())
以下是Controller Method的示例:
[HttpPost] public ActionResult Edit(Project project) { if (ModelState.IsValid) { if(project.StartDate.stateChange() || project.Duration.stateChange()) doSomething(); db.Entry(project).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(project); }
任何想法,我怎样才能做到这一点?
解决方法
我相信你可以将编辑过的实体与从数据库中读取的原始实体进行比较.
就像是:
public ActionResult Edit(Project project) { if (ModelState.IsValid) { var original = db.Find(project.ID); bool changed = original.StartDate != project.StartDate || original.Duration != project.Duration; if (changed) { original.StartDate = project.StartDate; original.Duration = project.Duration; doSomething(); db.Entry(original).CurrentValues.SetValues(project); db.SaveChanges(); } } return View(project); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。