2012-04-26 6 views
6

私が作成し、ASP.NETページに追加したユーザーコントロールがあり、正常に機能しています。しかし、そのカスタムコントロールのプロパティをPage_Loadのコードの背後から参照しようとしていますが、アクセスできない変数がnullのため、できません。ページコードのPage_Loadで参照されるASP.NETユーザーコントロールのインスタンスがnullの場合

これはユーザーコントロールとPage_Loadでは通常ですか?もしそうなら、私は公共のプロパティにアクセスするために、コントロールのインスタンスへの参照をどうやって作ることができますか?これは、ページがレンダリングされる前にいくつかの変数を初期化するために必要なことです。

+0

Page_Loadメソッドでユーザーコントロールを参照できるはずです。マークアップとコードを表示してください。マークアップの例では、<%@ Register%>タグを含めてください。 – Mark

答えて

0

おそらくPage_PreRenderイベントからユーザーコントロールにアクセスできます。

page life cycle in asp.net hereに関する詳細なドキュメントがあります。

+0

ありがとう、それはトリックをするようだ! –

15

私は同じ問題を抱えていました。私のカスタムコントロールを間違って登録していました。

正しい定義:

<%@ Register Src="PeriodControl.ascx" TagName="PeriodControl" TagPrefix="ucs" %> 

不正定義:

<%@ Register TagPrefix="ucs" Namespace="MyWebsite" Assembly="MyWebsite" %> 

唯一の違いは、ASCXファイル直接代わりのアセンブリにコントロールを参照することでした。 Go figure !?

+2

ユーザーコントロールが実際にアセンブリ内にある場合(ascxはDLLにあり、サイト内にはありません)、何をしますか?私は、一般的に使用されているすべてのユーザーコントロールをDLLにコンパイルするために、通常、Webデプロイメントプロジェクトを使用しました。 VS2012はそのプロジェクトタイプをサポートしていませんが、サイトをアセンブリにコンパイルしてVSで読み込むことはできますが、登録方法がわからないので、ユーザーコントロールのコントロールがnullではありません。 –

+0

わかりません。それがdllから参照されている場合は、おそらくあなたのツールボックスに表示され、あなたのページにドラッグすることができます。その後、VSがあなたのために登録タグを作成します:)それは私が考えることができるすべてです。それが助けてくれることを願って... –

+0

私は2時間苦労していましたが、ついにあなたの解決策を見つけました。 – gangt

関連する問題