此按钮导致两个回发。
<asp:UpdatePanel ID="asdd" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:ImageButton ID="imgbtnNew" class="imgbtnNew" runat="server" CausesValidation="false"
ImageUrl="~/Administrative/images/fullpage.gif" OnClick="imgbtnNew_Click" />
</ContentTemplate>
</asp:UpdatePanel>
此代码显示我如何检查此行为
function pageLoad()
{
alert("Page load");
var manager = Sys.WebForms.PageRequestManager.getInstance();
manager.add_beginRequest(OnBeginRequest);
manager.add_endRequest(OnEndRequest);
}
function OnBeginRequest(sender, args)
{
var postBackElement = args.get_postBackElement();
alert("Begin" + postBackElement.id);
}
function OnEndRequest(sender, args)
{
alert("end req caled!");
var postBackElement = args.get_postBackElement();
if (postBackElement.className == 'imgbtnNew')
{
$get('upc1').style.display = "block";
}
}
另一个问题是,只有在第二次加载页面时单击按钮时才会发生此行为。它显示了开始和结束请求的单一警报,但第二次单击按钮时,它显示了两个开始请求警报,并且没有显示结束请求的警报,并且每次点击都会执行一次单击事件处理程序。因此,按钮第一次单击时按钮表现正常,但之后则没有。
答案 0 :(得分:0)
最后我明白了。添加了endRequest和beginRequest处理程序,但没有从PageRequestManager实例中删除,这就是为什么一次又一次地调用开始请求的原因。 EndRequest处理程序未执行,因为我在OnEndRequest方法中使用get_postBackElement()引发了错误,因此请求未结束并且更新进度控件持续显示。