将ValidationResult分配给特定字段?

问题描述:

我正在尝试使用IValidatableObject来验证相对于对方的表单值。我想将一个ValidationResult分配给特定的字段,这样我可以在该字段旁边显示一条错误消息。将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" }); 
    } 
+1

是的!我刚刚发现了这一点,并即将发布为我自己的答案 – Faust 2011-12-20 10:18:35