今天一位网友问我一个问题,内容如下:
“页面上一个保存按钮 我第一次点击他的时候他跑到重写的Render方法里面 第二次点击他的时候才进去click事件”。
我首先想到的是,onclick事件是在Render方法里面才绑定的。
然后我继续问一些问题,进一步了解“现场”情况。了解到事件是在<asp:textbox οnclick="btnSave_Click".../>这里就已经绑定了。而且看来他贴出来的Render方法的代码,没有任何相关的代码。然后网友远程,让我看了一下他的演示。然后我看了一下代码,发现TextBox中设置了AutoPostBack的属性为true,因此导致了第一次的点击是TextBox的OnTextChanged事件,当然不是btnSave_Click事件,而第二次,才是Click事件。当然保证第二次点击触发的是Click事件的是,TextBox的Text没有发生变化才行。
因此在TextBox的AutoPostBack属性设为True时,且当TextBox的值发生了变化,那么页面回发的事件就是TextBox的OnTextChange事件。所以出现这次误会的罪魁祸首就是TextBox的AutoPostBack属性。