2011-01-13 8 views
0

すべての.aspxページのマークアップにDataSourceがすべて定義されている従来のソリューションがあります。私がこれを持っている問題は、DataSourceがページ、コントロールで使用されているので、何回もインスタンス化されるということです。これは実現しないようにNInjectにDataSourceのインスタンス化を処理させることです。私は仕事の種類にその部分を持っているが、DataSourceがマークアップの代わりにコードビハインドで定義されている場合、PageプロパティはDataSourceに設定されていません。コードビハインドと比較してマークアップでDataSourceを宣言するときの違いはありますか?

この簡単な解決策は、基本クラスまたは何かにPageプロパティを設定することですが、プロパティがそこにあり、その理由を知りたいと思います。

答えて

1

設定後にDataBind()に電話する必要があります。

WebControl1.DataSource = something; 
WebControl1.DataBind(); 
+0

答えをありがとう、それはおそらく他の人にとっては役に立ちますが、私が求めていたものではありません。 'Page'プロパティが設定されていない理由を尋ねました。 –

+0

これはおそらく解決策の一部であり、私はそれをどのように解決したのかはっきりしていませんが、 'DataSource'プロパティの中でただ1つのメソッドではなく' DataSource'プロパティを設定するときに実際の 'DataSource'を使用しているかもしれません。 –

0

ページライフサイクルのインスタンス化の時点と関連があるかもしれませんか?コードの中のインスタンス化を監視(デバッグ)できますか?どのコールバックがコードの背後で使用していますか?コントロールコードを使用している場合は、Pageプロパティがまだ設定されていない可能性があります。そのため、コントロールがすでにいくつかのページに追加された後で、後のコールバックを選択します。

+0

私はページの 'PreInit'でコントロールをインスタンス化しようとしましたが、' Control'コレクションのページにインスタンス化しようとしましたが、それは役に立たなかった。私は 'Page'プロパティをオーバーライドし、現在の' HttpContext'からそれを調べる独自の 'DataSource'基本クラスを作成しました。 –

関連する問題