Я обнаружил очень интересную проблему в ASP.NET Core. Я использую поле bool для флажка. Я хочу заставить пользователя установить флажок для формы, которая будет отправлена.
Это поле bool в моем классе Model:
[Range(typeof(bool), "true", "true", ErrorMessage = "You must accept the Terms")]
public bool TermsAccepted { get; set; }
Обратите внимание, что я применил атрибут проверки [Range]. И он работает отлично для проверки на стороне сервера .
Мой код метода действия довольно прост:
[HttpPost]
public IActionResult Index(JobApplication jobApplication)
{
if (ModelState.IsValid)
return View("Accepted", jobApplication);
else
return View();
}
Но проблема возникает, когда я применяю проверку на стороне клиента
На мой взгляд, я применяю 3 сценария:
@section scripts {
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js">
</script>
}
Проверка на стороне клиента работает совершенно противоположно, при установке флажка выдается сообщение об ошибке. Почему это происходит наоборот?
HTML-код, созданный флажком:
<input type="checkbox" class="input-validation-error" data-val="true" data-val-range="You must accept the Terms" data-val-range-max="True" data-val-range-min="True" data-val-required="The TermsAccepted field is required." id="TermsAccepted" name="TermsAccepted" value="true" aria-describedby="TermsAccepted-error">
Пожалуйста, помогите?