为什么在世界范围内这样做:
<%= Html.CheckBox("ForSale", Model.Product.ForSale)%> For Sale
产生以下HTML:
<input id="ForSale" name="ForSale" type="checkbox" value="true" />
<input name="ForSale" type="hidden" value="false" />
For Sale
现在,每当我选中该框并访问
Request.Form["ForSale"]
时,我都会得到"true,false"
的荒谬答案。我应该解析吗?对于其他HtmlHelper控件,不会显示此隐藏字段,那么为什么对CheckBox来说却如此?
如何关闭这个愚蠢的“功能”? 还是
HtmlHelper
不再有用呢?更新
从下面的答案看来,这背后有一些逻辑。我准备了一些扩展方法,因此不必考虑(由于@ eu-ge-ne):
public static bool GetCheckBoxValue(this System.Web.HttpRequestBase req,
string name) {
return Convert.ToBoolean(req.Form.GetValues(name).First());
}
最佳答案
如果未选中,它将强制包含该字段。如果取消选中复选框,则不会将其作为页面的一部分发送-仅在选中复选框后才发送,然后值为true。隐藏字段可确保如果未选中此复选框,则将发送false,因为始终会发送隐藏字段。
关于asp.net-mvc - 为什么ASP.NET MVC Html.CheckBox输出两个具有相同名称的INPUT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1127357/