我有asp.net核心应用程序和即时通讯试图添加简单的复选框,没有任何验证。Checkbox被绑定到模型上的布尔属性。下面是代码
模型
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');
}
})
})
我在input
元素上使用asp-for
标签助手。请注意,IsEmployee
属性没有必需的属性。但是由于有了asp-for
标签帮助器,所呈现的html在input
元素上具有data-val-required
和data-val
属性。它还添加了另一个同名的hiddden input
元素。下面是呈现的html。(还要注意,我认为只有在输入类型为checkbox时才会发生这种情况。对于文本框,它工作正常)
<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"
。
问题
这里有两个问题
我一单击check 1>框,错误消息就会显示为The IsEmployee field is required.
无论是否选中复选框,2>kendoValidator.validate()方法始终返回false。
在这里演示JSFiddle
更新2
我们不能将可为空的bool绑定到checkbox。我使用的是asp.net内核。我不确定建议here在asp.net核心中的等效语法是什么,它对经典的asp.net有效
发布于 2019-05-14 03:20:06
将data-validate="false“添加到复选框输入中。kendoValidator将忽略该属性设置为false所有输入。
<input type="checkbox" asp-for="IsEmployee" data-validate="false" />
发布于 2016-11-01 23:13:17
如果你不想要默认生成的html,你有两个选择。
的行为方式即可。您可以创建自己的IHtmlGenerater,也可以通过扩展DefaultHtmlGenerator并覆盖GenerateCheckBox和可能的GenerateInput,然后将其注册为services.TryAddSingleton();来完成此操作
希望这对你有帮助。
https://stackoverflow.com/questions/40346924
复制相似问题