2012-07-12 4 views
5

ユーザーの設定に応じて、他のユーザーコントロールを動的に追加するユーザーコントロールがあります。オーバーロードされたLoadControlメソッドでコントロールを追加する際に問題があります。コンストラクタを使用してユーザコントロールを動的に作成できますか?

は、私はこれをやってみました:

ddControl = typeof(DropDownControl), new object[] { testData, FilterModel.Models[i] }); 

しかし、ddControlのコントロールのいずれも初期化されなかったと私はそれが含まれているコンボボックスにデータソースを設定しようとしたとき、それが爆発しました。私は、モデルやなどのプロパティ、デフォルト値、私は

(DropDownControl)LoadControl("~/WebUserControls/DropDownControl.ascx") 

、またはできのようなコントロールを作成した後、モデル値をロードするLoadModel()メソッドを作成する必要がありますかを設定しますコンストラクタにデータソースに渡します私はそれを動的に宣言しながら、何とかそのコンストラクタを通してすべてを行いますか?

これが明確でない場合は、どうすればいいか教えてください。ありがとう!

+0

ウェブフォームとユーザーコントロールは、コンストラクタインジェクションにアレルギーがあります。あなたの最善の策は、注入を行うために 'LoadControl'の後に呼び出すメソッドを追加することです。 –

答えて

0

PlaceHolderを使用すると、これらのユーザーコントロールを動的に追加し、その方法を公開することで他の操作を行うことができます。コントロールのライフサイクルを妨げずにすべてのコントロールを強化できます。

代わりにコンストラクタを使用してプロパティとメソッドを使用しないでください。

関連する問題