C#でasp .Netを使用しています。複数の Web ユーザー コントロール (.ascx) で構成されるページ (.aspx) があります。
ユーザーコントロールの1つに例外がある場合、asp .netがコントロールにわかりやすいエラーメッセージを表示するように、エラー処理メカニズムが必要です。他のすべてのコントロールは、期待どおりにレンダリングする必要があります。
例外の場合に表示/非表示にする各コントロールにプレースホルダーを配置せずにこれを行う方法はありますか?
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
{
// ....
// ....
}
したがって、いずれかのコントロールが例外を作成した場合、残りは機能し続けます。