设置复选框的未选中值

时间:2011-02-24 09:09:10

标签: asp.net html asp.net-mvc

有没有办法设置复选框的默认未选中值? 我没有使用数据绑定控件。 这是从表单传递数据,并希望它在未选中时传递false而不是null。

3 个答案:

答案 0 :(得分:5)

是的,使用默认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以外的值,则应自行渲染复选框和隐藏字段,将隐藏字段的值设置为默认值。请注意,它们必须具有相同的名称属性。

答案 1 :(得分:0)

这可以通过在表单中​​添加一个额外的控件来实现:

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

如果没有选中,您的复选框就会有一个默认值。如果选中该复选框,则复选框会覆盖隐藏字段,为此工作复选框,隐藏字段必须具有相同的名称。

答案 2 :(得分:0)

我是用Razor做的,对我有用

获得价值

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

Razor View

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

Razor不支持可空的布尔

在C#侧

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