asp.net-mvc – 为什么ASP.NET MVC Html.CheckBox输出两个INPUT具有相同的名称?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 为什么ASP.NET MVC Html.CheckBox输出两个INPUT具有相同的名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么在世界上行的:
<%= 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”],我得到的可笑答案“真,假”。我应该解析吗?

此隐藏字段不会显示为其他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相关文章