Проверка jQuery и ASP.NET MVC не отображают сообщения об ошибках - PullRequest
0 голосов
/ 24 апреля 2018

Я работаю с ненавязчивой проверкой полей формы 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" имеет значение "undefined", поскольку container.attr ("data-valmsg-replace ") является неопределенным.Но этот элемент и этот атрибут данных, по-видимому, присутствуют.

Кто-нибудь видел это раньше?Я явно что-то упускаю, но что?

...