У меня есть основное приложение asp.net, и я пытаюсь добавить простой флажок без проверки. Флажок привязан к логическому свойству модели. Ниже приведен код
Модель
public class MyModel
{
public bool IsEmployee { get; set; }
}
cshtml
<form>
<div>
<label asp-for="IsEmployee">Is Employee</label>
<input type="checkbox" asp-for="IsEmployee"/>
</div>
<button id="btnSave" class="btn btn-primary" type="button">Save</button>
</form>
<script src="~/js/test.js"></script>
javascript
$(function () {
var kendoValidator = $('form').kendoValidator().data("kendoValidator");
$('#btnSave').click(function () {
if (kendoValidator.validate()) {
alert('true');
}
else {
alert('false');
}
})
})
Я использую помощник тега asp-for
для элемента input
. Обратите внимание, что свойство IsEmployee
НЕ ИМЕЕТ атрибута [Обязательный]. Но из-за помощника тега asp-for
визуализированный html имеет атрибуты data-val-required
и data-val
в элементе input
. Он также добавляет еще один элемент hiddden input
с тем же именем. Ниже представлен HTML-код. (также обратите внимание, что я думаю, что это происходит только тогда, когда тип ввода установлен флажок. для текстовых полей он работает нормально)
<form novalidate="novalidate" data-role="validator">
<div>
<label for="IsEmployee">Is Employee</label>
<input name="IsEmployee" id="IsEmployee" type="checkbox" value="true" data-val-required="The IsEmployee field is required." data-val="true">
</div>
<button class="btn btn-primary" id="btnSave" type="button">Save</button>
<input name="IsEmployee" type="hidden" value="false">
</form>
Я также использую кендовалидатор, который добавляет data-role="validator"
в элемент формы.
Проблемы
Здесь 2 проблемы
1> Как только я нажимаю на флажок, появляется сообщение об ошибке как The IsEmployee field is required.
2> метод kendoValidator.validate () всегда возвращает false, независимо от того флажка установлен или нет.
Демо здесь JSFiddle
Обновление 2
Мы не можем привязать значение nullable bool к флажку. Я использую ядро asp.net. Я не уверен, какой эквивалентный синтаксис в ядре asp.net для предложения здесь, что действительно для классического asp.net