我正在尝试使用IValidatableObject来相对于彼此验证表单值。我想将ValidationResult分配给特定字段,这样我可以在该字段旁边显示错误消息。
例如,我可能想让用户两次输入密码,并且如果第二个不等于第一个,则验证失败,然后在第二个之后显示错误消息。
但是,看来我只能以这种方式在模型级别分配错误。在模型级别,我的意思是错误将显示在@Html.ValidationSummary(true)
上,并且与特定的模型字段无关。
我已经检查了ValidationResult的声明,但看不到任何对此有用的属性或方法。因此,有人可以向我展示一种从IValidateableObject的Validate方法内将ValidationResult分配给特定字段的方法,还是可以确认是否可以这样做?
(注意:我不是在寻找解决方法。请-例如,关于使用密码示例的过滤器,没有任何答案。我只想具体了解IValidateObject的限制。)
最佳答案
可能,ValidationResult有一个重载,它接受要关联的字符串的IEnumarable属性。
一个例子。
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Password != PasswordConfirmation)
yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" });
}
关于asp.net-mvc - 将ValidationResult分配给特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8573232/