1

パネルのようにコンテンツをラップできるascxコントロールを作成しようとしています。私は次のようなことをしたいと思っています-

<%@ Register TagPrefix="FOO" TagName="Section" Src="CollapsibleSection.ascx" %>
    <Foo:Section runat="server">
        [ Section of asp.net webforms page ]
    </Foo:Section>

Webフォームを作成してからしばらく経ちましたが、これが可能かどうか思い出せませんか?完全にカスタムのコントロールを作成することもできますが、それが可能であれば、アプリには多くの利点があります。

4

2 に答える 2

6

TemplateContainerAttributeユーザー コントロールを で装飾し、から継承する必要がありますINamingContainer

于 2012-06-19T16:50:56.227 に答える
3

これは、テンプレート化されたコントロールと呼ばれます。

これが C# と VB.Net の両方でどのように行われるかを説明する簡単なチュートリアルを次に示します: 方法: テンプレート化された ASP.NET ユーザー コントロールを作成する

MSDN から引用 (上記のリンク):

  1. .ascx ファイルで、テンプレートを表示する場所に ASP.NET PlaceHolder コントロールを追加します。
  2. ユーザー コントロールのコードで、ITemplate 型のプロパティを実装します。
  3. テンプレートのインスタンスを作成するコンテナーとして INamingContainer インターフェイスを実装するサーバー コントロール クラスを定義します。これは、テンプレートの名前付けコンテナーと呼ばれます。
  4. ITemplate を実装するプロパティに TemplateContainerAttribute を適用し、テンプレートの名前付けコンテナーの型を引数として属性のコンストラクターに渡します。
  5. コントロールの Init メソッドで、次の手順を 1 回以上繰り返します。
    • ネーミング コンテナー クラスのインスタンスを作成します。
    • ネーミング コンテナーにテンプレートのインスタンスを作成します。
    • 名前付けコンテナー インスタンスを PlaceHolder サーバー コントロールの Controls プロパティに追加します。
于 2012-06-19T16:56:02.753 に答える