3

マスター ページを使用する asp.net に Web サイトがあります。このマスター ページには、コンテンツ ページのすべてのコンテンツを含む 1 つのビューと、すべてのコンテンツ ページからのエラー メッセージを表示するマスター ページへのローカル コンテンツを含む 1 つのビューを含むマルチビュー コントロールがあります。

このエラー ビューには、エラー メッセージを表示する asp.net ラベル コントロールがあります。通常、ラベルは正常に機能しますが、ラベルが null である場合がいくつかあり、NullReferenceException がレンダリングされます。使用する前にラベルが null かどうかを確認することでこのケースを処理しましたが、それでも私の質問は次のとおりです。

このラベルが null なのはなぜですか? これを生成できる状況は何ですか?

編集:マスター ページには、文字列を取得してラベルを設定する SetErrorText というメソッドがあります。コンテンツ ページの Page_Load メソッドからこのメソッドを呼び出していますが、これは通常は正常に機能します。(これまでに発見した) 2 つのケースを除くすべてで、ラベルは初期化されており、これら 2 つのケースと機能するすべてのケースを区別するものは何もありません。

また、ラベルを格納するビュー コントロールなど、マスター ページ内の他のすべてのコントロールが初期化されます。

コンテンツ ページの Page_Load がロールアラウンドすると、マスター ページが読み込まれます。

4

4 に答える 4

4

問題はずさんさだったようです。マスター ページに ContentPlaceHolder コントロールがあるすべてのコンテンツ ページで、Visual Studio がスローする自動生成された Content コントロールを削除するのを誰かが忘れていました。

コンテンツ ページに Content-control がある場合、マスター ページの ContentPlaceHolder-control に配置されるすべてのコントロールは null になるようです。

于 2008-09-05T07:15:19.057 に答える
1

マスター ページのどのメソッドからラベルにアクセスしていますか? ページのライフサイクルの段階によっては、ラベル コントロールがまだ読み込まれていない可能性があります。

于 2008-09-05T06:41:07.890 に答える
0

作成される前にアクセスできますか? ページのライフサイクルを確認してください: http://msdn.microsoft.com/en-us/library/ms178472.aspx

于 2008-09-05T06:47:20.840 に答える