我们正在使用带有 C# 的 asp .Net。我的页面(.aspx)由多个 Web 用户控件(.ascx)组成
我希望有一个错误处理机制,如果其中一个用户控件有任何异常,asp .net 应该在控件上显示一些友好的错误消息。所有其他控件应按预期呈现。
有没有什么办法可以做到这一点,而无需在出现异常时显示/隐藏的每个控件上放置占位符?
你可以做这样的事情。
具有每个 UserControl 必须实现的抽象 OnLoad() 的抽象基类。您可以对任何想要共享错误处理的事件使用相同的模型。
public abstract class BaseUserControl : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
OnLoad();
}
catch (Exception)
{
//Custom error handling here
}
}
protected abstract void OnLoad();
}
public class MyUserControl: BaseUserControl
{
protected override void OnLoad()
{
//My normal load event handling here
}
}
1)在app_code中,创建一个继承Page的类MyPage.cs
class MyPage : Page { }
2) 将您的页面的继承更改为 MyPage。
public partial class _Default : MyPage { ...
web.config 中有一个属性,您可以根据需要使用它来更改它
3)回到MyPage.cs,添加所有页面的通用错误处理程序
protected override void OnError(EventArgs e)
{
/* here you can intercept the error and show the controls that you want */
base.OnError(e);
}
首先创建一个覆盖默认 onerror 事件的基本用户控件类。
public class MyControlClass:UserControl
{
protected override void OnError(EventArgs e)
{
//here you sould add your friendly msg implementation
//base.OnError(e); here should remain commented
}
}
然后你可以创建你的用户控件:
public class Control1:MyControlClass
{
// ....
// ....
}
因此,如果任何控件创建异常,其余控件将继续工作。