<asp:UpdatePanel中使用下拉时不得不注意的问题
今天使用<asp:UpdatePanel NET的一个AJAX的一个里面的一个控件
,他能很好的结合NET原有控件,进行异步的请求,从而改善客户端感受。
但是今天我使用的时候,却发现我的值一直不能提交到服务器,而且是个别下拉不行,你选中以后他会默认到其他下拉里面去,这是为什么的,让我一直找不到原因。
一直不得其解,最后没有办法使用HTML排除法,当我右键打开源码的时候总算发现了问题
<select name="ddlYear" onchange="javascript:setTimeout('__doPostBack(\'ddlYear\',\'\')', 0)" id="ddlYear"> <option selected="selected" value="4,5,6,7,8,9,10,11,12">2012</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2013</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2014</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2015</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2016</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2017</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2018</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2019</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2020</option> <option value="1,2,3,4,5,6,7,8,9,10,11,12">2021</option> <option value="1,2,3,4">2022</option> </select>
当我看到这里的时候有些明悟了,原来因为他们的value是一致的,所以当你选择进行返回数据时,HTTP就会认为你是发送的多余的请求,从而你的这个操作就会失败。
没有办法我就把 text值放到了 value值中,于是问题解决。
<select name="ddlYear" onchange="javascript:setTimeout('__doPostBack(\'ddlYear\',\'\')', 0)" id="ddlYear"> <option selected="selected" value="2012-4,5,6,7,8,9,10,11,12">2012</option> <option value="2013-1,2,3,4,5,6,7,8,9,10,11,12">2013</option> <option value="2014-1,2,3,4,5,6,7,8,9,10,11,12">2014</option> <option value="2015-1,2,3,4,5,6,7,8,9,10,11,12">2015</option> <option value="2016-1,2,3,4,5,6,7,8,9,10,11,12">2016</option> <option value="2017-1,2,3,4,5,6,7,8,9,10,11,12">2017</option> <option value="2018-1,2,3,4,5,6,7,8,9,10,11,12">2018</option> <option value="2019-1,2,3,4,5,6,7,8,9,10,11,12">2019</option> <option value="2020-1,2,3,4,5,6,7,8,9,10,11,12">2020</option> <option value="2021-1,2,3,4,5,6,7,8,9,10,11,12">2021</option> <option value="2022-1,2,3,4">2022</option> </select>
主要是保证值的唯一性,这样在发起异步请求时,他就不会以为你是发送的垃圾的请求就可以了。