解决一个用Request.Form 取checkbox 取不到值的问题.

问题描述:

在测试公司系统中某个BUG的时候惊现 用Request.Form 取不到 checkbox 未选中状态时的值.

解决问题步骤如下:

在页面上放一个客户端(其实服务器端的也一样)的checkbox控件.代码如下:

 

    <div>
       <input type="checkbox" id="cktest" name="cktest" checked  />
        <asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="Button" />
    </div>

红色标注的<input type="checkbox" id="cktest" name="cktest" checked />是运行程序的关键.

 

然后在服务器端用Request.Form 取 数据 代码如下:

           string str = Request.Form["cktest"];
           Response.Write(str);
checkbox状态

运行页面,界面如图:

单击按钮,运行界面如图:(结果正常)
checked=true

断点调试结果正常.

去掉checked属性

运行页面,界面如图:

断点调试结果 为空?

单击按钮,运行界面如图:(没有任何变化,也就是后台根本没取到值.)

分析:
个人推测,因为用Request.Form 的方式取值,页面递交数据的时候用的是Post 的方式,可能是因为 控件没有选中,也就是没有值的话,HTML 认为没有必要将一个空值 提交上去,所以的FORM 对象中就没有该值.
找到问题后解决问题就简单了.
首先要判断该控件一定是在表单上存在,当用request.form 取的值 为 null的话,那么就认为该checkbox 控件 没有选中, 这个时候就认为checkbox 的选中状态为false 即可.

转载于:https://www.cnblogs.com/handk/archive/2010/11/10/1873661.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值