将ValidationResult分配给特定字段?

Fau*_*ust 12 asp.net-mvc asp.net-mvc-3

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

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

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

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

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

wna*_*nto 24

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

一个例子.

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