Я пытаюсь реализовать код, как указано в этой публикации . Другими словами, я пытаюсь реализовать ненавязчивую проверку по флажку условий. Если пользователь не установил флажок, ввод должен быть отмечен как недопустимый.
Это код валидатора на стороне сервера, который я добавил:
///
/// 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
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