我有同樣的問題。我用下面的組合固定它(與達林季米特洛夫一點幫助 - 謝謝):
VIEW:
<label for="optIn"><%=Html.CheckBox("optIn", ViewData["OptIn"])%>
控制器:
public ActionResult Index()
{
ViewData["Optin"] = True;
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection form, bool OptIn)
{
ViewData["Optin"] = OptIn;
}
這是一個有控制源並且沒有實際檢查的複選框(供參考):
選中:
<input Length="4" checked="checked" id="optIn" name="optIn" type="checkbox" value="true" /><input name="optIn" type="hidden" value="false" />
未選中:
<input Length="4" id="optIn" name="optIn" type="checkbox" value="true" /><input name="optIn" type="hidden" value="false" />
所以,這裏是我如何解釋我的行爲:如果該複選框未被選中,但會後回來,如果它是
HTML不會回發的字段值。該輔助程序在複選框控件(值爲'False')後附加一個隱藏字段。如果複選框被選中,則源代碼顯示「checked ='選中'」,如果未選中,則不顯示。所以,如果checked = checked,則true傳回給控制器。如果該框未被選中,則控制權不會被傳回,因此被命名爲相同的隱藏字段接管並返回false。這樣你有兩個條件。奇怪,但它的作品。我希望這有幫助。
瀏覽器有責任發送或不發送複選框值來請求?爲什麼? – Jalal 2011-05-09 11:40:34
如果我直接在View中使用''怎麼辦? – Jalal 2011-05-09 11:41:28
@Jalal Amini,如果你想避免使用這個隱藏字段,你可以直接在視圖中使用''。 – 2011-05-09 12:12:48