2008-09-05 9 views
3

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

このエラービューでは、エラーメッセージを表示するasp.net Labelコントロールがあります。通常、ラベルは正常に動作しますが、ラベルによってはNullReferenceExceptionがレンダリングされる場合があります。今、私はラベルを使用する前にnullであるかどうかをチェックすることでこのケースを処理しましたが、私の質問は次のとおりです。

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

EDIT:マスターページでは、私は、文字列を取り、ラベルを設定しますSetErrorTextと呼ばれる方法があります。私はコンテンツページのPage_Loadメソッドからこのメソッドを呼び出していますが、これは一般的にうまくいきます。 2つの場合を除いて(これまでに発見した)、ラベルは初期化されており、これらの2つのケースを動作するすべてのケースから分離するものはありません。

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

コンテンツページのPage_Loadが回転すると、マスターページに値を設定する必要があります。

答えて

4

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

コンテンツページにコンテンツコントロールがある場合、マスターページのContentPlaceHolderコントロールに配置されているコントロールはすべてnullになります。

1

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

0

私は非常に似たエラーがありました。私の場合は、コントロールデザイナーファイルに関連した.NETコンパイラのwierdnessが原因です。デザイナーファイルにコントロールが正しく定義されていても、それを削除し、再生成して再構築します(再ビルドしてください。単にビルドしないでください)。デザイナーファイルを再生成する方法については、上の解答を参照してください。

How do you force Visual Studio to regenerate the .designer files for aspx/ascx files?

関連する問題