【问题标题】:How can I suppress client-side validation messages in MVC3/jQuery unobtrusive validation?如何在 MVC3/jQuery 不显眼的验证中抑制客户端验证消息?
【发布时间】:2014-10-28 22:26:23
【问题描述】:

我正在使用 System.ComponentModel.DataAnnotations.RequiredAttribute 来指示某个模型属性是必需的。

如果不滚动我自己的必需验证属性,是否有一种相当简单的方法可以在客户端抑制验证消息,同时在通过 Html.ValidationSummary() 触发服务器端时仍然允许它们显示?我仍然希望进行验证,甚至突出显示输入元素,但我不希望为这个特定的必需属性显示“xyzField 是必需的”消息。

我确实需要 ValidationMessageFor 来保持此模型属性上的所有其他 ValidationAttributes 的操作 - 它只是我想禁止的必需项。

因此,我的推理是:我有几个非常接近的小字段,而必需的消息是多余的而且太忙了。特别是考虑到“必需”是最常见的违规者。很明显,该字段是空白的,但是是必需的(有 * 必需的符号,当留空时加上红色突出显示)。

有什么想法吗?我知道自定义验证器并不难 - 我已经有一些,但我想了解是否有办法控制我不知道的这种行为。

【问题讨论】:

    标签: jquery asp.net-mvc-3 client-side-validation


    【解决方案1】:

    您应该取出所有帮助者的验证消息,例如:

    @Html.ValidationMessageFor(m => m.UserName)
    

    然后将验证摘要帮助器留在表单顶部:

     @Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
    

    如果您需要更具体的答案,则必须发布代码。

    将模型中的错误消息留空怎么办?例如,在您所需的属性中,它将是 [Required][Required(ErrorMessage="")]

    看到这个帖子:Validation outside model

    【讨论】:

    • 谢谢 - 也许我没有解释清楚,但我在需要 ValidationMessageFor 的同一个模型属性上还有其他验证属性,因此不能完全删除它。
    • 我可以在模型中将错误消息留空,但我确实希望错误消息显示在验证摘要中。你知道...吃我的蛋糕也吃:)
    • 我相信 ValidationSummary 仅在回发后显示。因此,您可以设置 ModelState.AddModelError("", "Some Error Text");在控制器中,然后当屏幕回发时,它应该显示该错误消息。
    • 在 MVC3 上,如果启用了客户端验证,似乎会触发 ValidationSummary 以显示客户端,并且有一条规则阻止页面发布
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多