これはあなたが作成しているよりも簡単です。 error.aspxというページ(またはそれを呼び出すページ)を作成し、web.configのCustomErrorsをオンにします。
<configuration>
<system.web>
<customErrors defaultRedirect="errors.aspx"
mode="On">
</customErrors>
</system.web>
</configuration>
さまざまなHTTPエラーまたはランダム例外を処理するための設定がたくさんあります。必要に応じて、例外メッセージ(または例外自体)をセッションにダンプするか、HttpServerUtility.GetLastError
(documentation)を使用して、エラーページに任意の数の異なるメッセージを出力できます。これは、あなたが捕まえない例外をキャッチします。
CustomErrors Documentation
編集:
@IcarusはOPはページのみページ内のエラーメッセージを表示しながら描画して出力し続けることにより、解決策を探しているので、私が提供するだろうことを示している それにも答えてください。
過去にこれを処理した方法はいくつかあります。要求された振る舞いが致命的である(ページの結果を知ることはできない)非常に複雑なページの場合、私は主な主要素を含む上記のように、常にエラーページを延期しています。だから、メニュー、ヘッダーなどはすべてそこにありますが、大惨事の通知は明白です。
あなたが探しているような動作は、一般的なメッセージを報告するよりも、例外を報告する必要性が少なくなります。私の好みは、メッセージを注入できる公開バインド可能なプロパティを持つユーザーコントロールを持つことです。 (VBを許して、私は私のC#バージョンを見つけることができないよう)のような:
<BrowsableAttribute(True), Bindable(False), Category("Misc"), _
Description("Gets or sets the NavigateUrl property for the link to start a new request.")> _
Public Property MyImportantMessage() As String
Get
Return _myImportantMessage
End Get
Set(ByVal value As String)
_myImportantMessage= value
End Set
End Property
その後、出力はあなたが好きな文字列メッセージかもしれないか、プリセットの数でプログラミングができ、リソースからのフェッチ、なんでも。それを入手する方法については、MasterPageルートを利用しました。マスターコントロールには、そのようなプロパティをユーザーコントロールに直接割り当てるメソッドがあります。このメソッドを呼び出し可能にするには、マスターページを使用する各ページにVirtualPathプロパティを含める必要があります。そうしないと、メソッドはコンパイル時に使用できなくなります。
<%@ MasterType
VirtualPath="~/MasterPage.master" %>
そして、これはMaster
プロパティは、このプロパティを呼び出すために、ページ自体の内部から呼び出すことができます
'Keeping the VB theme
Me.Master.SetImportantMessage(message)
は、ページ内からMe.Master
がPage.Master
と同じではないことに注意してください。だからあなたの例外は、実際のページにバブルする必要があるか、またはページ参照自体をプロパティとしてusercontrolsに送信する必要があります。
は、私は、これはasp.netのウェブサイト上で、持っている必要がありますが、どのようなOP望んでいることは違うもので、彼は何かが間違っていることを、同じページ内でユーザに通知する方法を望んでいることに同意します。 – Icarus
@Icarus:私は初めて質問からそれを読んだことはありませんでしたが、その効果を編集します。ありがとう。 –
+1これは非常に包括的な答えです。 – Icarus