Ненавязчивая проверка MVC на флажке не работает

Я пытаюсь реализовать код, как указано в этой публикации . Другими словами, я пытаюсь реализовать ненавязчивую проверку по флажку условий. Если пользователь не установил флажок, ввод должен быть отмечен как недопустимый.

Это код валидатора на стороне сервера, который я добавил:

/// 
/// Validation attribute that demands that a boolean value must be true.
/// 
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class MustBeTrueAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        return value != null && value is bool && (bool)value;
    }
}

Это модель

[MustBeTrue(ErrorMessage = "You must accept the terms and conditions")]
[DisplayName("Accept terms and conditions")]
public bool AcceptsTerms { get; set; }

Это мое мнение:

@Html.EditorFor(x => x.AcceptTermsAndConditions)
@Html.LabelFor(x => x.AcceptTermsAndConditions)
@Html.ValidationMessageFor(x => x.AcceptTermsAndConditions)

и это jQuery, который я использовал для подключения клиентской части валидатора:

$.validator.unobtrusive.adapters.addBool("mustbetrue", "required");

Однако клиентский скрипт, похоже, не работает. Каждый раз, когда я нажимаю кнопку отправки, проверка в других полях завершается нормально, но проверка Условий и положений, похоже, не срабатывает. Так выглядит код в Firebug после того, как я нажал кнопку отправки.





Есть идеи? Я пропустил шаг? Это сводит меня с ума!

Заранее спасибо S

23
задан Community 23 May 2017 в 10:29
поделиться

1 ответ

Sniffer,

В дополнение к реализации решения Дарина, вам также необходимо изменить файл jquery.validate.unobtrusive.js. В этом файле вы должны добавить метод проверки «mustbetrue» следующим образом:

$jQval.addMethod("mustbetrue", function (value, element, param) {
    // check if dependency is met
    if (!this.depend(param, element))
        return "dependency-mismatch";
    return element.checked;
});

Затем (сначала я забыл добавить это), вы также должны добавить следующее в jquery.validate.unobtrusive.js:

adapters.add("mustbetrue", function (options) {
    setValidationValues(options, "mustbetrue", true);
});

Counsellorben

26
ответ дан 29 November 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: