我有 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
它还添加了一个具有相同名称的隐藏 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>
我也在使用 kendovalidator,它添加data-role="validator"
了表单元素。
问题
这里有 2 个问题
1> 一旦我点击复选框,错误消息就会显示为The IsEmployee field is required.
2>kendoValidator.validate() 方法总是返回 false,无论是否选中了复选框。
在这里演示JSFiddle
更新 2
我们不能将可为空的布尔值绑定到复选框。我正在使用 asp.net 核心。我不确定 asp.net 核心中对于经典 asp.net的建议的等效语法是什么