【问题标题】:Double PostBack inside UpdatePanelUpdatePanel 内的双重回发
【发布时间】:2011-07-30 15:28:30
【问题描述】:
我遇到了 ASP.NET 触发按钮单击两次的问题。该按钮位于 UpdatePanel 内,但是当我单击它时,我会收到两次回发,然后单击两次按钮,然后两次调用我的 DAL(按此顺序)。我以前从未遇到过这种情况,将 AutoEventWireup 更改为 false 没有效果。我能想到的唯一解决方法是隐藏 Web 服务中的功能并处理 jQuery 的复杂性,我不想为小项目做这件事。
萤火虫转储如下(这些都发生在单击一次)。
【问题讨论】:
标签:
c#
.net
asp.net
updatepanel
postback
【解决方案1】:
将以下脚本放在 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>
【解决方案3】:
奇怪的是,这似乎是由一个狡猾的按钮控制适配器引起的,它在按钮标签内添加了一个跨度以使滑动门工作。
【解决方案4】:
writer.AddAttribute(HtmlTextWriterAttribute.Type, "button");
没有意义,但有效