某些处理响应时间较长,为了防止用户重复连续点击提交按钮,我们通常会在点击之后 disable 此按钮。 在 ASP.NET 2.0 中 asp:button 默认使用客户端浏览器的提交机制即呈现为 input type=submit,如果直接设置 onclientclick="this.disabled=true" ,将无法执行提交。解决方法:只有设置 UseSubmitBehavior=false,按钮呈现为 input type=button,然后添加脚本
曾想当然的认为可以在 form 的 onsumit 中 disable input type=submit注:ASP时代更常用此方案,可以同时对一个form具有多个提交按钮作出统一的“响应”经测试,发现虽然可以回发页面,但是却无法触发服务器端的 Click 事件。原来,当点击 input type=submit 按钮时,如果其 disabled=false(正常状态),那么浏览器会同时提交此按钮(Request.Form 集合中可以查询到此按钮的value),而 disabled=true(禁用),浏览不会提交此按钮的value。而 ASP.NET 内部则检索是否有Request.Form中有对应的name匹配当然页面WebControl.UnquieID 来确定谁提交了改页面,由此引发注册的服务器事件。Updated 已经实现 2007年7月11日让 ASP.NET 2.0 的 Sumbit Button 支持 禁用(灰化)提交对于,input type=button ,浏览器永远都不提交此按钮给服务器,对于此类型提交,需要有一个隐藏域input type=hidden name=__EVENTTARGET 来存储谁提交了此页面。
完整测试代码:
下载