Проблема с проверкой флажка в форме Razor - PullRequest
0 голосов
/ 28 июня 2018

Я в настоящее время на стажировке и совершенно новичок в Razor и C # MVC. В настоящее время я создаю простую форму Razor, но моя проверка дает мне горе для флажка.

Вот мой код модели:

[DisplayName("Sign me up for spam* ")]
[Range(typeof(bool), "true", "true", ErrorMessage = "You must sign up for spam.")]
public bool Check { get; set; }

Вот моя разметка Razor:

@Html.LabelFor(model => model.Check, new { @class = "" })
@Html.CheckBoxFor(model => model.Check, new { @class = "example1"})

Вот сгенерированный HTML:

<input class="example1" data-val="true" data-val-range="You must sign up for spam." data-val-range-max="True" data-val-range-min="True" data-val-required="The Sign me up for spam*  field is required." id="Check" name="Check" type="checkbox" value="true">
<input name="Check" type="hidden" value="false">

Я знаю, что Razor автоматически сгенерирует оба входа. Моя проблема в том, что проверка не работает на флажок. Состояние модели всегда недопустимо из-за этого, и на стороне клиента сообщение об ошибке появляется, когда флажок установлен, и исчезает, когда флажок снят. Я искал ответы, но потерпел неудачу, и мой наставник тоже не знает, что происходит.

1 Ответ

0 голосов
/ 28 июня 2018

Похоже, обратная проблема на стороне клиента. Добавьте этот jquery на свою страницу, и я думаю, что это будет исправлено:

<script>
    // extend range validator method to treat checkboxes differently
    var defaultRangeValidator = $.validator.methods.range;
    $.validator.methods.range = function(value, element, param) {
        if(element.type === 'checkbox') {
            // if it's a checkbox return true if it is checked
            return element.checked;
        } else {
            // otherwise run the default validation function
            return defaultRangeValidator.call(this, value, element, param);
        }
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...