我有一个模型类,其中包含几个必填字段:
public class UserMetadata
{
[Required(ErrorMessage = "Please enter a name.")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a password.")]
public string Password { get; set; }
}
在创建 View 上,如果我没有输入名称和/或密码,则会显示验证摘要错误。一切都很好。对于编辑 View ,我仅显示“名称”字段-不显示“密码”字段。
当我将更改保存在编辑页面上时,出现验证摘要错误,提示我必须输入密码。
我该如何控制密码字段的验证,以便对于编辑 View 不打扰?或者,我是否以错误的方式处理此问题?我仍然希望“名称”字段验证可在编辑 View 上工作。
编辑:
对于我的MVC项目,我使用的是Entity Framework。因此,我定义了一个“UserMetadata”类,以便可以将“[Required]”之类的内容附加到“User”类(位于EDMX文件中)的某些字段上。
我还应该解释一下,我正在使用一个 View 模型,例如“UserEditViewModel”,该模型具有附加的“User”属性。所以在我的帖子上:
[HttpPost]
public ActionResult Edit(UserEditViewModel inputViewModel)
{
if(ModelState.IsValid) { inputViewModel.User blah.... }
}
认为我在输入此问题时有点着急。您认为重要的其他丢失信息,请大声疾呼。
干杯。
贾斯
最佳答案
我最终在我的操作方法中这样做:
ModelState.Remove("User.Password");
现在我的代码运行良好,只在“名称”字段上引发了验证错误,这正是我想要的。
关于validation - 保存在编辑页面上时忽略“必需”属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900645/