Установить непроверенное значение флажка

Есть ли способ установить установленное по умолчанию значение флажка? Я не использую управление базой данных. Это передача данных из формы, и она должна пропускать false, а не null при отсутствии отметки.

Ответ 1

Да, используя значение по умолчанию HtmlHelpers, вы достигнете этого для вас

<%: Html.Checkbox("myCheckbox") %>

или с помощью Razor

@Html.Checkbox("myCheckbox")

Метод Checkbox() будет отображать поле input type="hidden" вдоль стороны ввода type="checkbox", которое будет отправлять значение false, когда флажок снят.

<input id="myCheckbox" name="myCheckbox" type="checkbox" value="true" />
<input name="myCheckbox" type="hidden" value="false" />

Если вы хотите отправить значение, отличное от false, тогда вы должны отобразить флажок и скрытое поле, установив значение скрытого поля в значение по умолчанию. Обратите внимание, что они должны иметь одинаковый атрибут имени.

Ответ 2

Это может быть достигнуто добавлением дополнительного контроля к форме таким образом:

<input type="hidden" name="checkbox1" value="off">
<input type="checkbox" name="checkbox1" value="on"> My checkbox

Таким образом, у вас есть значение по умолчанию для вашего флажка, если оно не будет проверено. Если он установлен, флажок переопределяет скрытое поле, так как для этого флажок и скрытое поле должны иметь то же имя.

Ответ 3

Я сделал это с помощью Razor, работает для меня

Получение ценности

bool CashOnDelivery = Product.CashOnDelivery == null ? false : Convert.ToBoolean(Product.CashOnDelivery);

Просмотр бритвы

@Html.CheckBox("CashOnDelivery", CashOnDelivery) (Not nullable bit)

Бритва не поддерживает nullable bool

На стороне С#

 Insert.CashOnDelivery = Convert.ToBoolean(Collection["CashOnDelivery"].Contains("true")?true:false);