防止来自__doPostBack的完整回发
我有一个内容页面,其中包含以下内容……
- UpdatePanel1 – 包含错误显示Div
包含两个按钮的更新触发器- UpdatePanel2 – 包含带有asp:按钮的进程1
- updatePanel3 – 包含带有asp:按钮的进程2
- 向用户显示Popup的JavaScript根据正在执行的进程确认Jquery Messagebox。
根据菜单选项中的用户选择,UpdatePanel 2或3变为可见。
当我单击一个按钮时,消息框弹出,并使用消息框响应中的__doPostback正确处理页面,页面执行完整的回发。
我宁愿页面进行部分回发及其拥有的内容,如果出现错误则显示错误显示分区。 任何援助将不胜感激。
按钮没什么特别的
这是内容页面脚本块
这是OnInit背后的代码:
protected override void OnInit(EventArgs e) { base.OnInit(e); this.PreLoad += (sender, args) => { this.ClientScript.GetPostBackEventReference(this, "arg"); if (!IsPostBack) { return; } string __targetaction = this.Request["__EVENTTARGET"]; string __args = this.Request["__EVENTARGUMENT"]; if (string.IsNullOrEmpty(__args)) return; if (__targetaction == "ResetSomething") { ResetSomething(); } if (__targetaction == "ResetSomethingElse") { ResetSomethingElse(); } this.upnlNotifications.Update(); }; }
定义下面的函数并用doPostBackAsync(controlId, null)
替换__doPostBack
调用。
function doPostBackAsync(eventName, eventArgs) { var prm = Sys.WebForms.PageRequestManager.getInstance(); if (!Array.contains(prm._asyncPostBackControlIDs, eventName)) { prm._asyncPostBackControlIDs.push(eventName); } if (!Array.contains(prm._asyncPostBackControlClientIDs, eventName)) { prm._asyncPostBackControlClientIDs.push(eventName); } __doPostBack(eventName, eventArgs); }
controlId应该是生成异步回发的按钮的id,否则页面中会发生完全回发。 为此,您可以将clientidmode用作静态例如
//then you can use below code _doPostBack('button1', '');//clientidmode forces buttonid = id given by us
检查一下吗?
如果是这样,那么您可以获得异步回发而不是整页回发。
这对我有所帮助。 感谢@Tim的评论。
- url设置中没有查询参数的Google Analytics网站搜索(JQUERY)
- 在ASP.NET中使用回发的jQuery模式对话框
- 使用jQuery在特定的“ValidationGroup”中启用/禁用asp.netvalidation器控件?
- 如何在asp.net Gridview控件中添加datepicker
- jQuery-mobile和ASP.NET组合问题
- 使用JQuery从asp:textbox中检索值
- 当值包含美元符号时,如何按属性值选择元素?
- 如何在所有页面上加载ScriptResourceDefinition,而不是在带有控件的页面上自动加载
- 如何使用ASP.NET MVC3编辑嵌套模型