jQuery验证和ASP.NET MVC不显示错误消息

时间:2018-04-24 18:13:47

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation

我正在使用ASP.NET MVC 5和jQuery不显眼的表单字段验证。

我已正确设置了web.config设置。

如果我没有填写必填字段,我无法提交表格,光标设置为空字段。

但是,不会显示任何错误消息。

剃刀:

<div class="d-1of2 t-1of2 m-all">
                    @Html.LabelFor(m => m.FirstName)
                    @Html.MaxLengthTextBoxFor(m => m.FirstName, new { @class = "alphaonly" })
                    @Html.ValidationMessageFor(m => m.FirstName)
                </div>

型号:

        [Required]
    [Display(Name = "First Name")]
    [StringLength(100)]
    public string FirstName { get; set; }

标记(来自“查看页面来源”):

<div class="d-1of2 t-1of2 m-all">
    <label for="FirstName">First Name</label>
    <input class="alphaonly" data-val="true" data-val-length="The field First Name must be a string with a maximum length of 100." data-val-length-max="100" data-val-required="The First Name field is required." id="FirstName" maxlength="100" name="FirstName" type="text" value="" />
    <span class="field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="true"></span>
</div>

所以,看起来这些不起眼的东西已经到位了。

当我调试jquery.validate.unobtrusive.js文件时,问题出现在这个函数中:

    function onError(error, inputElement) {  // 'this' is the form element
    var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
        replaceAttrValue = container.attr("data-valmsg-replace"),
        replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;

    container.removeClass("field-validation-valid").addClass("field-validation-error");
    error.data("unobtrusiveContainer", container);

    if (replace) {
        container.empty();
        error.removeClass("input-validation-error").appendTo(container);
    }
    else {
        error.hide();
    }
}

变量“replaceAttrValue”是“未定义的”,因为container.attr(“data-valmsg-replace”)是“未定义的”。但是,该元素和该数据属性似乎存在。

有没有人见过这个?我显然错过了什么,但是什么?

0 个答案:

没有答案