【问题标题】:How to update object values in database when ModelState is invalidModelState 无效时如何更新数据库中的对象值
【发布时间】:2012-02-06 15:18:24
【问题描述】:

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

通常,当出现错误时,不会保存数据,而是将带有验证信息的表单重新显示给用户。

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

我怎样才能做到这一点?过去有没有人做过类似的事情?

【问题讨论】:

  • “将无效的排除在外”是什么意思?您希望数据库中包含哪些无效属性?是否要将相应的列设置为空?或者您想使用以前的值(如果实体已经存在于数据库中)。如果用户没有更正错误并且您只剩下部分填充的行,是否可以?
  • 我只想更新那些具有有效状态的属性。我想省略更新那些无效的(所以当前数据库值保持不变)。用户不改错也没关系。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2021-11-09
    相关资源
    最近更新 更多