2011-02-24 117 views
0

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

回答

4

是,使用默认HtmlHelpers将实现这个要求

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

或用剃刀

@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以外的值,那么你应该呈现的复选框,并隐藏字段自己的隐藏字段的值设置为默认值。请注意,它们必须具有相同的名称属性。

+0

我完全错过了mvc标签。卫生署! ;) – Lazarus 2011-02-24 10:50:06

+0

我发现使用隐藏值技术只适用于隐藏的输入值首先在表单中(仅在Chrome 18上测试)。 – justinl 2012-04-26 05:25:25

0

这可以通过这样增加一个额外的控制形式来实现:

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

你有你的复选框的缺省值的方式应该是不被选中。如果选中该选项,则复选框将覆盖隐藏字段,因为此操作复选框,并且隐藏字段必须具有相同的名称。

+0

你确定吗?通常当你有两个同名的元素时,它们会以某种形式的数组发送到服务器。 – 2011-02-24 09:21:20

+0

@Sam是的,这是ASP.NET MVC在使用@ Html.CheckBox()HtmlHelper方法时的做法。 – 2011-02-24 09:55:45

+0

那很方便 – 2011-02-24 10:00:43

0

我做到了用剃刀,对我的作品

获得价值

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

Razor视图

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

剃刀不支持可能为空布尔

在C#侧

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