你如何处理Web用户控制事件?我注意到我的自定义Web用户控件有一个事件调用OnError,但是当我调整控件失败时它永远不会触发。该控件基本上是一个自定义的gridview控件。我通过网络搜索网络用户控件事件处理,但是我没有找到一篇文章解决我寻找的问题。有人可以做一个快速解释或指向正确的方向吗?在asp.net页面上处理Web用户控制错误
谢谢
你如何处理Web用户控制事件?我注意到我的自定义Web用户控件有一个事件调用OnError,但是当我调整控件失败时它永远不会触发。该控件基本上是一个自定义的gridview控件。我通过网络搜索网络用户控件事件处理,但是我没有找到一篇文章解决我寻找的问题。有人可以做一个快速解释或指向正确的方向吗?在asp.net页面上处理Web用户控制错误
谢谢
我想我找到我的答案。 http://msdn.microsoft.com/en-us/library/ms972975.aspx#usercontrols_topic5
我花了一段时间,但我认为这篇文章就是我要找的。我希望它可以帮助别人。
你没有提到ASP.NET的味道,所以我将假设VB-C#与连接事件处理程序的例外情况大致相同。
你希望看到的正常模式是沿着这些路线的东西:
用户控制 “的MyUserControl” 代码隐藏
Public Event MyEvent(ByVal Sender As Object, ByVal e As EventArgs)
Private Sub SomeMethodThatRaisesMyEvent()
RaiseEvent MyEvent(Me, New EventArgs)
End Sub
页面设计代码
Private WithEvents MyUserControl1 As System.Web.UI.UserControls.MyUserControl
页或其他控制,它包装的MyUserControl实例代码隐藏
Private Sub MyUserControlEventHandler(ByVal Sender As Object, ByVal e As EventArgs) _
Handles MyUserControl.MyEvent
Response.Write("My event handled")
End Sub
在某些情况下,你看到的东西称为事件冒泡不遵循这种模式完全吻合。但是从处理用户控件到包装控件或其所在页面的事件的基本意义上来说,这就是你期望它能够工作的方式。
我有一个自定义控件抛出的异常没有触发Error
事件。因此我无法从该控件捕获异常并在ASP.NET页面中显示适当的消息。
这是我做的。我裹在一个try..catch
块自定义控件的代码,并解雇了Error
事件自己,像这样:
// within the custom control try { // do something that raises an exception } catch (Exception ex) { OnError(EventArgs.Empty); // let parent ASP.NET page handle it in the // Error event }
的ASP.NET页面中使用Error
事件这样处理异常:
<script runat="server">
void MyCustomControl_Error(object source, EventArgs e)
{
MyCustomControl c = source as MyCustomControl;
if (c != null)
{
// Notice that you cannot retrieve the Exception
// using Server.GetLastError() as it will return null
Server.ClearError();
c.Visible = false;
// All I wanted to do in this case was to hide the control
}
}
</script>
<sd:MyCustomControl OnError="MyCustomControl_Error" runat="server" />