【发布时间】:2011-02-24 09:09:09
【问题描述】:
有没有办法设置复选框的默认未选中值? 我没有使用数据绑定控件。 这是从表单传递数据,并且希望它在未选中时传递 false 而不是 null。
【问题讨论】:
标签: asp.net html asp.net-mvc
有没有办法设置复选框的默认未选中值? 我没有使用数据绑定控件。 这是从表单传递数据,并且希望它在未选中时传递 false 而不是 null。
【问题讨论】:
标签: asp.net html asp.net-mvc
是的,使用默认的HtmlHelpers 将为您实现这一目标
<%: Html.Checkbox("myCheckbox") %>
或使用 Razor
@Html.Checkbox("myCheckbox")
Checkbox() 方法将在输入 type="checkbox" 旁边呈现一个 input type="hidden" 字段,当复选框未选中时,该字段将提交值 false。
<input id="myCheckbox" name="myCheckbox" type="checkbox" value="true" />
<input name="myCheckbox" type="hidden" value="false" />
如果您想提交除false 以外的值,则应自己渲染复选框和隐藏字段,并将隐藏字段的值设置为默认值。请注意,它们必须具有相同的 name 属性。
【讨论】:
这可以通过在表单中添加一个额外的控件来实现:
<input type="hidden" name="checkbox1" value="off">
<input type="checkbox" name="checkbox1" value="on"> My checkbox
这样,如果不选中,您的复选框就有了默认值。如果选中,则复选框将覆盖隐藏字段,以便复选框和隐藏字段必须具有相同的名称。
【讨论】:
我是用 Razor 做的,对我有用
获取价值
bool CashOnDelivery = Product.CashOnDelivery == null ? false : Convert.ToBoolean(Product.CashOnDelivery);
剃刀视图
@Html.CheckBox("CashOnDelivery", CashOnDelivery) (Not nullable bit)
Razor 不支持可为空的 bool
在C#端
Insert.CashOnDelivery = Convert.ToBoolean(Collection["CashOnDelivery"].Contains("true")?true:false);
【讨论】: