小编典典

如何检查UpdatePanel是否回发?

ajax

有没有一种方法可以确定是否<asp:UpdatePanel />执行了Ajax回发,类似于我们的使用方式…

if(!Page.IsPostBack) { ...snip }

…以确定是否正在执行按钮提交的回发。

我正在尝试检测来自jQuery的Ajax请求,但它也接收了我想排除的UpdatePanel请求,例如…

if (Request.IsAjaxRequest() && !Page.IsUpdatePanelPostback)
{
    // Deal with jQuery Ajax
}

阅读 326

收藏
2020-07-26

共1个答案

小编典典

我不知道这是否会比您的解决方案更好,但是您是否尝试过?

if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
{
    Control ctrl = GetControlThatCausedPostBack(Page);
    if (ctrl is UpdatePanel)
    {
        //handle updatepanel postback
    }
}

private Control GetControlThatCausedPostBack(Page page)
{
    //initialize a control and set it to null
    Control ctrl = null;

    //get the event target name and find the control
    string ctrlName = Page.Request.Params.Get("__EVENTTARGET");
    if (!String.IsNullOrEmpty(ctrlName))
        ctrl = page.FindControl(ctrlName);

    //return the control to the calling method
    return ctrl;
}
2020-07-26