4

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プロパティには [Required] 属性がないことに注意してください。しかし、asp-forタグ ヘルパーのため、レンダリングされた html には要素の属性 がdata-val-requiredあります。また、同じ名前の隠し要素をもう 1 つ追加します。以下はレンダリングされたhtmlです。(また、入力タイプがチェックボックスの場合にのみ発生すると思うことに注意してください。テキストボックスの場合は正常に機能します)data-valinput input

 <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"フォーム要素 を追加する kendovalidator も使用しています。

問題
ここには 2 つの問題があり
ますThe IsEmployee field is required.

ここでデモJSFiddle

更新 2
nullable bool をチェックボックスにバインドできません。私はasp.netコアを使用しています。従来のasp.netに有効な、ここでの提案に対するasp.netコアの同等の構文が何であるかわかりません

4

2 に答える 2