【问题标题】:ASP.NET control events exception handlingASP.NET 控件事件异常处理
【发布时间】:2009-05-29 10:51:58
【问题描述】:
假设我在 aspx 页面中有一个按钮,可以将表单数据保存到数据库。在关联的事件处理程序中,在发送更新之前,我从 Web 服务中读取了一些内容,该操作可能会导致异常。如果出现错误,我希望在页面上显示足够的消息,并保留表单中的所有数据。我怎样才能做到这一点?此外,我的所有页面都继承自一个基页,所以如果可能的话,我希望在基类中包含所有错误处理代码。如果可能的话,我不希望使用 try-catch 块包围任何 Web 服务调用,如果出现任何未处理的异常,我会自动调用某些方法,例如 Page_error,但仍将数据保留在我的表单中。
【问题讨论】:
标签:
asp.net
exception
controls
event-handling
【解决方案1】:
如果抛出异常,您可以轻松地将管理显示消息的方法(可能设置一些 errorMessageLabel 的文本)放在从任何派生类调用的超类中(如果您想使用继承来为页面设置模板) (如果确实抛出了异常,您可以将 superclas 方法的调用放在一个 catch 块中,或者如果 Web 服务不可用,您可以根据您的编程风格手动管理它)。
就保留呈现的数据而言,如果 viewstate 处于打开状态并且您没有动态填充页面,那么您就可以了 - 如果没有,您需要在 viewState 或会话条目中显式保存状态信息并在出现问题时将其取回出错。
这一点实际上取决于您的页面是如何实际实现的。