【问题标题】:MVC Custom Attribute - Client-side Validation - Warning: No message defined for 'field'MVC 自定义属性 - 客户端验证 - 警告:没有为“字段”定义消息
【发布时间】:2015-03-12 20:44:46
【问题描述】:

我尝试使用 VS2013 在 MVC 5 项目中创建自定义数据注释验证属性 (NameValidationAttribute)。我能够成功添加客户端验证,并且一旦焦点离开文本框,就会显示自定义验证的错误消息。但是,像 [Required] 和 [Range] 验证器这样的标准属性现在没有显示正确的错误消息,如“警告:没有为 'field' 定义消息”(见下面的屏幕截图)。

问题: - 为什么标准验证错误消息显示为“警告:没有为 UnitsInStock 定义消息”?我错过了什么?

以下是我的自定义客户端验证脚本:

我在 EditProducts 页面中包含了以下脚本。

请注意,UnitPrice、UnitsInStock 和 ReorderLevel 字段的错误消息是使用 Range 验证属性定义的(见下文)。

仅供参考,我尝试更改 ProductEdit 页面中脚本的顺序,但仍然显示相同的消息。

请指教!

【问题讨论】:

  • 有人寻求帮助吗?
  • 在客户端代码实际上决定要显示什么之前,我看到了类似的闪光。

标签: validation visual-studio-2013 asp.net-mvc-5 data-annotations custom-attributes


【解决方案1】:

我遇到了这个问题。我创建了一个名为 PasswordAttribute 的 MVC 属性,以及一个名为“password”的客户端验证器。

$.validator.addMethod('password', function (value, element, params) {
    ...[validation logic]
});

$.validator.unobtrusive.adapters.addBool('password');

当我将此逻辑添加到解决方案中后,我收到了您在密码和确认密码字段中看到的错误。请注意,这发生在甚至使用该属性之前。只需将客户端验证器重命名为“密码检查”即可解决问题。我最初认为名称“密码”可能与预定义的验证器之一发生冲突(参见jQuery Validation Documentation),但事实并非如此。我现在怀疑它与某些输入字段属性的名称或值发生冲突。无论如何,解决方案只是重命名验证器。

【讨论】:

    【解决方案2】:

    jQuery 不显眼需要data-msg 来获取默认验证消息。 这是如何将模型中的动态错误消息应用到 Html

      $.validator.unobtrusive.adapters.add("requireif", function (options) {
            $('#' + options.element.id).attr("data-msg", options.message);
            // Add rule ...
        });
    

    您可以更改默认警告消息。

     $.validator.addMethod("requireif", function (value, element, pair) {
            // validate logic
            return true/false;
     }, "YOUR DEFAULT MESSAGE HERE");
    

    或者

      @Html.TextBoxFor(m => m.Property1, new { Class = "form-control", data_msg = "YOUR DEFAULT MESSAGE HERE" })
    

    或者如果你可以像这样直接把它放到你的 Html 中。

    <input class="form-control" data-msg="YOUR DEFAULT MESSAGE HERE"/>
    

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 2012-01-21
      • 2015-03-26
      • 1970-01-01
      • 2014-03-27
      相关资源
      最近更新 更多