2

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

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

有没有什么办法可以做到这一点,而无需在出现异常时显示/隐藏的每个控件上放置占位符?

4

3 回答 3

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
    }
}
于 2012-07-12T20:47:20.493 回答
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);
}
于 2012-07-12T20:40:04.660 回答
-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
    {
        // ....
        // ....
    }

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

于 2012-07-12T21:28:14.900 回答