【发布时间】:2021-09-22 07:51:38
【问题描述】:
我的模型类由 3 个必填字段组成。我正在提交 MVC 表单,其中只有 2 个必填字段,并将一个字段留空(PhoneNumber)。
public class User
{
[Required]
public String UserName { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string PhoneNumber { get; set;}
}
在操作结果中,我得到了 ModelState Invalid,这是真的。然后,我使用 ModelState.Remove("PhoneNumber"); 从 ModelState 中删除该无效属性,然后再次检查 ModelState 之后是否变为 true。
但在保存模型时,由于空白字段 (PhoneNumber),它会引发实体验证错误,尽管我从 ModelState 中删除了无效属性。如何在这种情况下跳过实体验证错误并将模型保存在数据库中。
【问题讨论】:
-
EF 阻止将空数据保存到数据库的不可空字段中。
-
请张贴您用来保存更新记录的代码。
-
ModelState.Remove将禁用服务器端验证,但您的数据库中仍然存在导致问题的空值检查。最好为您的数据库和前端视图使用不同的模型,并使用 Automapper 之类的方式在两者之间进行映射 -
如果您不想提交
PhoneNumber字段,则从模型中移除required验证并在SQL表中将其设置为NULL。
标签: c# asp.net-mvc entity-framework modelstate