调试思想

    说是调试思想,其实也不是,只是由于昨天让我修改bug,我光知道不停的使用断点,F5,花费2小时也没找到问题,当然也没解决.后来找SA帮我弄,三下五除二,搞定.目前还学不会人家的调试技巧,因为基本是思想,所以只好把调试的过程记录下来,以备学习.
    首先大概说明下我出错的地方.在应聘的说明(就相当于一个招聘公司在网上发布的一个工作的招聘信息)中,有一个工作年限下拉框,绑定了工作年限的所有值,1-8,从在读学生到工作经验20年以上.而在当初填写这份应聘说明的时候,并没有选择工作年限.所以打开这份招聘说明的时候,一次性绑定所有的值,并默认选中的是第一项在读学生,Selectedvalue为"1".目前没有什么问题,但是当提交简历,点击申请应聘的时候,由于页面会刷新回发,导致下拉框的SelectedValue会进行验证,从而报错.
    如何发现这个错误的?
    首先,由于是工作年限这个字段出的错,从而将断点定位到工作年限的set上,看是谁在修改工作年限的值.后发现时DataBind在修改它的值,而且发现一个问题;当页面第一次加载的时候,尽管给工作年限赋了""(由于这份招聘申请的工作年限字段从数据库中查出来是""的),但是他的SelectedValue依然顽强的显示'1'这个值.这是为什么?进而他们想到,为什么第一次没有报错,但是也没回发之后报错?
    所以,他们打开了帮助,MSDN,找到了Selectedvalue,查看selectedValue会出什么样的错误,从而找到了这样一段话.When the selected value is not in the list of available values and a postback is performed, an ArgumentOutOfRangeException exception is thrown. 当选定的值不在列表中,并且是回发时,会报错.也就是说,列表的值是1-8,但是选定的值是"",不在列表中.并且在页面加载时不出错,但是回发时报错.所以解决方法是在列表中再增加一个下拉项,值为(请选择,"").
    从而学到了两点调试的思想,首先正确定位(或者说透过表面看本质,不管表面是什么出错的是工作年限),是工作年限这个字段出错,我一直都知道,但是却没有想到去定位这个字段的get和set,并且也完全没往selectedValue上想过,没有想过去查这个属性会出什么样的错.也没有从一开始就去区分这到底是前台的错,还是后来的错;其次,工具,尽管一直知道的MSDN,但是从来没有好好利用过,只知道百度各种知识.
    而至于SelectedValue被赋值为"",却依然顽强的显示'1'这个值.这是为什么?可以自己查看SelectedValue的源码.目前还没弄到反编译的工具.这里推荐一个软件ReSharper,软件不大,很好用,但是装上之后VS会很卡,我的电脑hold不住,只好卸了.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值