我们正在使用asp .Net和C#。我有页面(.aspx)由多个Web用户控件(.ascx)
组成我希望以这样的方式处理机制错误:如果其中一个用户控件中有任何异常,asp .net应该在控件上显示一些友好的错误消息。所有其他控件应按预期呈现。
如果没有在每个控件上放置占位符,如果出现异常,是否可以这样做?
答案 0 :(得分:3)
你可以这样做。
具有每个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 :(得分:1)
1)在app_code中,创建一个继承Page
的类MyPage.csclass 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);
}
答案 2 :(得分:-1)
首先创建一个基本用户控件类,它覆盖默认的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
{
// ....
// ....
}
因此,如果任何控件创建了一个异常,其余的将继续工作。