我有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>
我正在使用kendovalidator,它在表单元素上添加了data-role="validator"
。
问题
这里有2个问题
1 GT;点击后,我会立即将错误消息显示为The IsEmployee field is required.
无论是否选中复选框,2&gt; kendoValidator.validate()方法始终返回false。
在这里演示JSFiddle
更新2
我们不能将可空的bool绑定到checkbox。我使用的是asp.net核心。我不确定asp.net核心中对于经典asp.net有效的建议here的等效语法
答案 0 :(得分:0)
如果你不是默认生成的html,你有两个选择。
希望这有助于你。
答案 1 :(得分:0)
将data-validate =“ false”添加到复选框输入。 kendoValidator将忽略该属性设置为false的所有输入。
<input type="checkbox" asp-for="IsEmployee" data-validate="false" />