2

У меня есть основное приложение asp.net и я пытаюсь добавить простой флажок без какой-либо проверки. Флажок привязан к логическому свойству модели. Ниже приведен кодasp-for tag добавляет обязательную проверку поля на флажке в ядре 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 тег helper на input элемент. Обратите внимание, что свойство IsEmployee НЕ имеет атрибута [Обязательный]. Но из-за asp-for тег хелпер обработанный html имеет data-val-required и data-val атрибуты на input элемент. Он также добавляет еще один hidddeninput элемент с таким же именем. Ниже представлено 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() метод всегда возвращает ложь независимо от того, установлен флажок или нет.

Демо здесь JSFiddle

Update 2
Мы не можем связать обнуляемого BOOL с флажком. Я использую ядро ​​asp.net. Я не уверен, что эквивалентный синтаксис в ядре asp.net для предложения here, который действителен для классического asp.net

ответ

0

Если вы не хотите создавать по умолчанию HTML-код, у вас есть 2 варианта.

  1. Не используйте его! Вы не вынуждены использовать помощники тегов, они есть, когда вам нужны другие атрибуты html. В этом случае просто используйте < input name = "IsEmployee" ...>
  2. Изменить способ asp-for ведет себя за ваш флажок. Вы можете сделать это, либо создав свой собственный IHtmlGenerater, либо расширив DefaultHtmlGenerator и переопределив GenerateCheckBox и возможно GenerateInput, а затем зарегистрировав его с помощью чего-то вроде services.TryAddSingleton();

Надеюсь, это поможет вам.

 Смежные вопросы

  • Нет связанных вопросов^_^