设置未勾选的复选框值
是,使用默认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
以外的值,那么你应该呈现的复选框,并隐藏字段自己的隐藏字段的值设置为默认值。请注意,它们必须具有相同的名称属性。
这可以通过这样增加一个额外的控制形式来实现:
<input type="hidden" name="checkbox1" value="off">
<input type="checkbox" name="checkbox1" value="on"> My checkbox
你有你的复选框的缺省值的方式应该是不被选中。如果选中该选项,则复选框将覆盖隐藏字段,因为此操作复选框,并且隐藏字段必须具有相同的名称。
你确定吗?通常当你有两个同名的元素时,它们会以某种形式的数组发送到服务器。 – 2011-02-24 09:21:20
@Sam是的,这是ASP.NET MVC在使用@ Html.CheckBox()HtmlHelper方法时的做法。 – 2011-02-24 09:55:45
那很方便 – 2011-02-24 10:00:43
我做到了用剃刀,对我的作品
获得价值
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);
我完全错过了mvc标签。卫生署! ;) – Lazarus 2011-02-24 10:50:06
我发现使用隐藏值技术只适用于隐藏的输入值首先在表单中(仅在Chrome 18上测试)。 – justinl 2012-04-26 05:25:25