当ModelState无效时,如何更新数据库中的对象值

时间:2012-02-06 15:18:25

标签: asp.net-mvc-3 validation entity-framework-4.1

我正在使用Entity Framework 4.1和MVC3。我有一个用于更新我的模型属性的表单。属性具有验证属性。验证工作正常,在执行操作时,ModelState包含有关验证错误的所有信息。

通常情况下,如果出现错误,则不会保存数据,并且会将包含验证信息的表单重新显示给用户。

我想要做的是保存有效的属性并保留无效的属性。客户端验证工作和无效字段变为红色,因此可以在下一个请求中更改和保存它们。

我怎样才能实现这一目标?过去有没有人做过类似的事情?

1 个答案:

答案 0 :(得分:0)

我认为您需要禁用验证(DbContext.Configuration.ValidateOnSaveEnabled)并覆盖DbContext.SaveChanges()。在overriden方法中,我将调用DbContext.GetValidationErrors(),它将返回无效entites的列表。然后我将从上下文中分离这些entites并调用base.SaveChanges()。在调用SaveChanges完成后,我将重新附加无效实体。