我从昨天开始就有这个问题。在我的用户模型中,我有一个名为“ ConfirmPassword ”的[NotMapped]。我没有将它保存在数据库中,但我总是在我的 Create 表单中使用它来验证新用户的数据输入。
从那以后,没关系。问题出在我的 [HttpPost] 编辑操作上。我应该能够在没有输入的情况下编辑一些用户的数据并确认密码。如果我想更改密码,我同时使用 Password 和 ConfirmPassword 作为确认旧密码并通知新密码的一种方式。但是,如果我不这样做,我会将它们留空。
我已经使用下面的代码来传递 ModelState.IsValid() 条件并且它起作用了:
ModelState["Password"].Errors.Clear();
ModelState["ConfirmPassword"].Errors.Clear();
但是,就在 db.SaveChanges() 之前,考虑到 User 用户视图模型,它的两个属性都是空的,我得到了:
Property: ConfirmPassword Error: The field ConfirmPassword is invalid.
问题是:当我想更新对象时,如何跳过所需的模型验证?
我已经阅读了自定义 ModelValidations 以及扩展ValidationAttribute和 DataAnnotationsModelValidator的类,但我做得不对。
任何的想法?我如何创建一个自定义模型验证来检查 UserId 属性是否为空。这是检查我是否处于创建或编辑操作的好方法。
谢谢,保罗