ASP .Net用户控制错误处理

时间:2012-07-12 19:43:32

标签: c# asp.net .net iis

我们正在使用asp .Net和C#。我有页面(.aspx)由多个Web用户控件(.ascx)

组成

我希望以这样的方式处理机制错误:如果其中一个用户控件中有任何异常,asp .net应该在控件上显示一些友好的错误消息。所有其他控件应按预期呈现。

如果没有在每个控件上放置占位符,如果出现异常,是否可以这样做?

3 个答案:

答案 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.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);
}

答案 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
    {
        // ....
        // ....
    }

因此,如果任何控件创建了一个异常,其余的将继续工作。