2011-02-24 224 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);