有没有一种方法可以确定是否<asp:UpdatePanel />执行了Ajax回发,类似于我们的使用方式…
<asp:UpdatePanel />
if(!Page.IsPostBack) { ...snip }
…以确定是否正在执行按钮提交的回发。
我正在尝试检测来自jQuery的Ajax请求,但它也接收了我想排除的UpdatePanel请求,例如…
if (Request.IsAjaxRequest() && !Page.IsUpdatePanelPostback) { // Deal with jQuery Ajax }
我不知道这是否会比您的解决方案更好,但是您是否尝试过?
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; }