将ValidationResult分配给特定字段?

时间:2011-12-20 09:25:57

标签: asp.net-mvc asp.net-mvc-3

我正在尝试使用IValidatableObject来相互验证表单值。我想将ValidationResult分配给特定字段,以便我可以在该字段旁边显示错误消息。

例如,我可能希望用户输入密码两次,如果第二个不等于第一个,则验证失败,然后在第二个旁边显示错误消息。

然而,似乎我只能以这种方式在模型级别分配错误;按模型级别我的意思是将显示@Html.ValidationSummary(true)的错误,并且该错误与特定的模型字段无关。

我已经检查了ValidationResult的声明,但我没有看到任何看起来对此有帮助的属性或方法。那么 - 任何人都可以向我展示一种方法,从IValidateableObject的Validate方法中将ValidationResult分配给特定字段,或者确认不可能这样做吗?

(注意:我不是在寻找解决方法。请不要 - 例如,没有关于密码示例的过滤器的答案。我只想具体了解IValidateObject的限制。)

1 个答案:

答案 0 :(得分:24)

可能,ValidationResult有一个重载,接受字符串的IEnumarable,要关联的属性。

一个例子。

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Password != PasswordConfirmation)
            yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    }