Флажок всегда передает истинное значение контроллеру MVC .Net

Я думаю, вы могли бы создать класс с именем noclass и включить функции в качестве методов. Кроме того, вы можете разделить noclass на несколько категорий функций.

0
задан Tetsuya Yamamoto 19 March 2019 в 08:30
поделиться

1 ответ

Наиболее вероятная причина - привязка к свойству AllowOrder с помощью помощника HiddenFor перед использованием <input type="checkbox" />, который будет генерировать входные элементы в следующем порядке:

<input name="AllowOrder" type="hidden" ... />

<input type="checkbox" id="allowOrder" name="AllowOrder" value="true" ... />

, поскольку существует 2 Для входных элементов с таким же значением атрибута name только первый элемент <input> будет привязан к свойству viewmodel, которое содержит значение true в вашем случае. Вместо того, чтобы создавать флажок вручную с тегом <input> и скрытым полем отдельно, вы должны использовать вспомогательный атрибут @Html.CheckBoxFor() и переключить атрибут checked с помощью вспомогательной функции ниже или использовать троичный оператор:

public object SetChecked(bool value)
{
    if (value)
    {
        return new { id = "allowOrder", @checked = "checked" };
    }
    else
    {
        return new { id = "allowOrder" };
    }
}

Флажок

@* alternative 1 *@

@Html.CheckBoxFor(model => model.AllowOrder, @(SetChecked(Model.AllowOrder)))

@* alternative 2 *@

@Html.CheckBoxFor(model => model.AllowOrder, new { id = "allowOrder", @checked = @(Model.AllowOrder ? "checked" : "") })

Примечание: checked - это ключевое слово C #, поэтому его необходимо экранировать с помощью @, чтобы установить его как атрибут HTML визуализации <input type="checkbox" /> .

0
ответ дан Tetsuya Yamamoto 19 March 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: