我遇到一个问题,即ASP.NET点击两次按钮。该按钮位于UpdatePanel内,但是当我点击它时,我得到两个回发,然后是两次按钮点击,然后两次调用我的DAL(按此顺序)。我之前从未遇到过这种情况,将AutoEventWireup更改为false无效。我能想到的唯一解决方法是隐藏Web服务中的功能并使用jQuery处理并发症,我不想为一个小项目做这些。
萤火虫转储在下面(这些都是一次点击发生的)。
答案 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;);
没有意义但是有效