防止来自__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的评论。
- 在行按钮上单击生成事件并添加图标? 如何
- 从codebehind打开jQuery Dialog
- jquery – 在其中查找嵌套的Gridview和控件
- 如何在jquery方法中获取asp.net会话值?
- 如何在asp.net的razor视图中使用动态id时使用jquery更改段落的内部html
- 如何将json字符串传递给webmethod c#ASP.NET
- Jquery自动完成不能在ASP.NET MVC 5上运行
- 生成像StackOverflow这样的“toast”消息
- Internet Explorer 8中的ScriptManager.RegisterClientScriptBlock和jQuery问题