我有同样的问题。我用下面的组合固定它(与达林季米特洛夫一点帮助 - 谢谢):
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