asp.net:コントロールを動的に作成

場合によっては、コントロールを動的に作成する必要があります。 標準要素の場合、すべてが簡単です。
        ラベルtestLabel =新しいラベル()
         {
            テキスト=「TEST」
         };
         Page.Controls.Add(testLabel);


このコードは、ラベルタイプの要素にテキスト「TEST」を追加します。
カスタム要素の場合、物事はもう少し複雑ですが、シンプルでもあります。

まず、コントロールを追加するページに参​​照を追加する必要があります(デザイン中にコントロールを追加するときに使用されるレジスタの代わりに)。
 <%@ Reference Control = "〜/ ctrls / MyWebCtrl.ascx"%>


コメント: ostapbenderが正しく述べているように、asp.net Webアプリケーションを使用する場合、asp.netサイトプロジェクトモデルを使用する場合、参照を宣言する必要があります。名前空間とお互いを「知る」。

次に、コントロールクラスをインスタンス化するには、ロジックでLoadControlを使用する必要があります。
 ctrls_MyWebCtrl ctrl =(ctrls_MyWebCtrl)LoadControl( "〜/ ctrls / MyWebCtrl.ascx"); 


これで、オブジェクトのすべてのプロパティを設定するか、必要なメソッドを呼び出すことができます。 既製のコントロールがページのControlCollectionコンテナに追加されます。通常、これには標準のPlaceHolderコントロールが使用されます。
 PlaceHolder1.Controls.Add(ctrl); 


1つの注意点として、コントロールを作成するときにクラス名を明示的に指定することをお勧めします。
 <%@ Control ... ClassName = "ctrls_MyWebCtrl"%>


この値は、コントロールの動的作成中に使用されます。指定されていない場合、値はコントロールファイルの名前から形成されます。
以上です。


Source: https://habr.com/ru/post/J24999/


All Articles