【问题标题】:Assign ValidationResult to specific field?将 ValidationResult 分配给特定字段?
【发布时间】:2011-12-20 09:25:57
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    一个例子。

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

    【讨论】:

    • 是的!我刚刚找到了这个,并准备发布作为我自己的答案
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多