gpt4 book ai didi

asp.net-mvc - ValidationSummary 显示重复的消息

转载 作者:行者123 更新时间:2023-12-04 22:52:32 25 4
gpt4 key购买 nike

如果两个文本框一次验证失败,则 ValidationSummary 会显示相同的消息两次。

难道我做错了什么?或者是否有我可以更改的设置来隐藏重复的消息?

我把它分解为最简单的例子:

看法:

@model MyModel
@Html.ValidationSummary()
@Html.TextBoxFor(model => model.A)
@Html.TextBoxFor(model => model.B)

模型:
public class MyModel : IValidatableObject
{
public int A { get; set; }
public int B { get; set; }

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//Some logic goes here.
yield return new ValidationResult("Validation failed", new[] { "A", "B" });
}
}

结果:

enter image description here

最佳答案

从 ValidationSummary 的角度来看,它们不是重复的 - 您将模型状态错误分配给字段 A 和 B,因此验证摘要中必须有 2 个错误。它不“知道”它们是相同的。

简单的解决方案:

  • 仅将模型分配给其中之一
  • 从摘要中排除属性分配的错误 - Html.ValidationSummary(true)

  • 稍微难一点的解决方案:
  • 制作您自己的 ValidationSummary 助手,在其中调用标准的验证摘要逻辑,然后以“选择不同”的方式过滤结果(这里 linq 是您的 friend )。

  • 编辑:

    例如这样的事情:
    public static class ValidationExtensions
    {
    public static MvcHtmlString FilteredValidationSummary(this HtmlHelper html)
    {
    // do some filtering on html.ViewData.ModelState
    return System.Web.Mvc.Html.ValidationExtensions.ValidationSummary(html);
    }
    }

    关于asp.net-mvc - ValidationSummary 显示重复的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766749/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com