UpdatePanel 内的双重回发

问题描述 投票:0回答:5

我在 ASP.NET 触发按钮单击两次时遇到问题。该按钮位于 UpdatePanel 内,但当我单击它时,我会收到两次回发,然后单击两次按钮,然后两次调用我的 DAL(按此顺序)。我以前从未遇到过这种情况,将 AutoEventWireup 更改为 false 没有效果。我能想到的唯一解决方法是隐藏 Web 服务中的功能并使用 jQuery 处理复杂性,对于小项目我不想这样做。

Firebug 转储如下(这些都通过单击进行)。 enter image description here

c# .net asp.net updatepanel postback
5个回答
6
投票

将以下脚本放在页面的 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>

0
投票

是否您已将 jQuery

click()
挂接到按钮上,该按钮也通过 ASP.NET 隐式内联挂接到 onchange 上?

jQuery.change + 内联 onchange fn() 导致 fn 执行两次

或者您是否检查过是否已挂钩服务器端处理程序两次,既在标记中以声明方式,又在代码隐藏中以命令方式?


0
投票

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


0
投票

writer.AddAttribute(HtmlTextWriterAttribute.Type, "按钮");

毫无意义但有效


0
投票

如果在 aspnet 表单中使用带有 Runat=Server 的

<button>
,则 onclick 将包含 __doPostback 调用。你需要附加一个“return false;”到 onclick,这样按钮就不会触发表单提交(回发)。

$("#buttonID").attr('onclick', $("#buttonID").attr('onclick')+";return false;")
© www.soinside.com 2019 - 2024. All rights reserved.