UpdatePanel中的双重PostBack

时间:2011-07-30 15:28:31

标签: c# .net asp.net updatepanel postback

我遇到一个问题,即ASP.NET点击两次按钮。该按钮位于UpdatePanel内,但是当我点击它时,我得到两个回发,然后是两次按钮点击,然后两次调用我的DAL(按此顺序)。我之前从未遇到过这种情况,将AutoEventWireup更改为false无效。我能想到的唯一解决方法是隐藏Web服务中的功能并使用jQuery处理并发症,我不想为一个小项目做这些。

萤火虫转储在下面(这些都是一次点击发生的)。 enter image description here

4 个答案:

答案 0 :(得分:5)

在ScriptManager之后的页面上放置以下脚本。

<script type="text/javascript"> 
var postbackControl = null; 
var parm = Sys.WebForms.PageRequestManager.getInstance(); 
parm.add_beginRequest(BeginRequestHandler); 
parm.add_endRequest(EndRequestHandler); 

function BeginRequestHandler(sender, args) 
{ 
 postbackControl = args.get_postBackElement(); 
 postbackControl.disabled = true; 
} 
function EndRequestHandler(sender, args) 
{ 
postbackControl.disabled = false; 
postbackControl = null; 
} 
</script>

答案 1 :(得分:0)

是不是你已经将jQuery click()挂钩到按钮上,该按钮也隐式内联到ASP.NET的onchange上?

jQuery.change + inline onchange fn() causes fn to execute twice

或者你是否检查过你是否曾两次挂钩服务器端处理程序,在声明中以声明方式挂钩并在代码隐藏中强制执行?

答案 2 :(得分:0)

奇怪的是,这似乎是由一个狡猾的ControlAdapter按钮引起的,它在按钮标签内增加了一个跨度,使滑动门工作。

答案 3 :(得分:0)

  

writer.AddAttribute(HtmlTextWriterAttribute.Type,&#34; button&#34;);

没有意义但是有效