加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 为什么ASP.NET MVC Html.CheckBox输出两个INPUT

发布时间:2020-12-15 19:12:56 所属栏目:asp.Net 来源:网络整理
导读:为什么在世界上行的: %= 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 现在每当我检查框并访
为什么在世界上行的:
<%= 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,因为始终发送隐藏字段。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读