updatepanel – 更新面板不显示ASP.NET 3.5中的错误
发布时间:2020-12-16 07:36:52 所属栏目:asp.Net 来源:网络整理
导读:在Visual Studio 2008中,如果您创建一个新的“Ajax 1.0启用的ASP.NET 2.0 Web应用程序”并粘贴以下代码: form id="form1" runat="server" asp:ScriptManager ID="ScriptManager1" runat="server" / div asp:UpdatePanel ID="UpdatePanel1" runat="server" C
在Visual Studio 2008中,如果您创建一个新的“Ajax 1.0启用的ASP.NET 2.0 Web应用程序”并粘贴以下代码:
<form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Button runat="server" ID="foo" Text="click me" onclick="foo_Click" /> </ContentTemplate> </asp:UpdatePanel> </div> </form> 代码背后 protected void foo_Click(object sender,EventArgs e) { throw new Exception("hello"); } 然后单击按钮,您将看到一个“hello”的javascript警报.如果您创建.NET 3.5 Web应用程序并粘贴相同的代码,则不再显示任何警报.我错过了什么? 解决方法
ASP.NET AJAX Extensions 1.0和ASP.NET AJAX 3.5中的默认行为肯定会发生变化.通过查看Sys.WebForms.PageRequestManager的默认endPostBack事件处理程序可以看到这一点.前一版本使用警报显示错误,而后一版本仅重新显示错误.
// ASP.NET AJAX Extensions 1.0 function Sys$WebForms$PageRequestManager$_endPostBack(error,response) { this._processingRequest = false; this._request = null; this._additionalInput = null; var handler = this._get_eventHandlerList().getHandler("endRequest"); var errorHandled = false; if (handler) { var eventArgs = new Sys.WebForms.EndRequestEventArgs(error,this._dataItems,response); handler(this,eventArgs); errorHandled = eventArgs.get_errorHandled(); } this._dataItems = null; if (error && !errorHandled) { alert(error.message); } } // ASP.NET 3.5 function Sys$WebForms$PageRequestManager$_endPostBack(error,executor,data) { if (this._request === executor.get_webRequest()) { this._processingRequest = false; this._additionalInput = null; this._request = null; } var handler = this._get_eventHandlerList().getHandler("endRequest"); var errorHandled = false; if (handler) { var eventArgs = new Sys.WebForms.EndRequestEventArgs(error,data ? data.dataItems : {},executor); handler(this,eventArgs); errorHandled = eventArgs.get_errorHandled(); } if (error && !errorHandled) { throw error; } } 如果您希望警报出现在ASP.NET AJAX 3.5代码中,您只需进行一些小的更改即可. 首先,您需要为ScriptManager的AsyncPostBackError事件添加处理程序,然后设置AsyncPostBackErrorMessage. protected void ScriptManager1_AsyncPostBackError(object sender,AsyncPostBackErrorEventArgs e) { ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message; } 然后,您需要为客户端PageRequestManager的endRequest事件添加处理程序.在那里,您可以在服务器端获取AsyncPostBackErrorMessage,并使用Alert向用户显示消息. function pageLoad() { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest); } function onEndRequest(sender,args) { var msg = args.get_error().message; alert(msg); args.set_errorHandled(true); } 我希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – ASP.NET MVC – 导航当前页面突出显示
- asp.net-mvc – 哪个更正确:使用UpdateModel()或接收模型作
- asp.net – 如何在DotVVM viewmodel中创建会话变量?
- asp.net-mvc-3 – 如何在MVC 3 RAZOR中动态设置图像路径
- asp.net – Web.Config转换自定义配置部分
- DxPackNet 4.保存音视频为本地avi文件
- asp.net-mvc – 具有列表和编辑器模板的ViewModel
- asp.net-mvc – AutoMapper xUnit:缺少类型映射配置或不支
- asp.net – 我没有选择母版页的选项
- .net – 在MVC应用程序之间共享视图,逻辑等