0

FormView コントロールのように "ItemTemplate" を必要とせずに、単一のテンプレート (ユーザーが任意のテキストを入力できることを意味します) を持つカスタム サーバー コントロールを持つことは可能ですか?

ソースビューのコントロールを次のように表示したい

<foo:mycontrol runat="server" id="controlid">

ユーザーは、必要な HTML コンテンツをここに配置します

</foo:mycontrol>

これの代わりに

<foo:mycontrol runat="server" id="controlid">

<ItemTemplate>

ユーザーは、必要な HTML コンテンツをここに配置します

</ItemTemplate>

</foo:mycontrol>

私のカスタム サーバー コントロールは、2 つの asp.net パネル コントロールと ajax collapsiblepanel コントロールを追加する必要があります。1 つのパネルは展開/折りたたみパネルになり、もう 1 つのパネルはユーザー テキストを入れて、折りたたみ可能なパネルを折りたたんでパネルを非表示にするものです。

複合サーバー コントロールを作成し、ITemplate を使用してこれを行う方法は知っていますが (少なくとも私は知っていると思います) <ItemTemplate、ソース ビューに子 > タグが必要です。

何か案は?

4

3 に答える 3

0

私はこれをテストしていませんが、リテラルまたはラベル コントロールから継承し、Text プロパティを読み書きすることでこれを行うことができると思います。

ps次回質問を投稿するときは、プレビューをチェックして、読み取り可能かどうかを確認し、前に4つのスペースがあるコードをフォーマットして、実際に表示され、構文が強調表示されるようにします。

于 2009-10-04T15:28:58.690 に答える
0

ジュリ、

このコントロールは、プロパティの設定についてあまり多くの知識を必要としない非開発者または開発者によって使用される可能性があることを明確にする必要があったため、パネルのようにドラッグして入力するだけのコントロールを開発しようとしていますtext であり、おそらくタイトルになる 1 つのプロパティを設定します。タイトル パネルと折りたたみ可能なパネルを作成し、asp.net ajax collapsiblepanel コントロールを利用したコンポジット コントロールを作成することができました。私はしたくないテンプレートを追加する必要がありました。

ダレル

于 2009-10-05T12:23:52.603 に答える
0

うーん、折りたたむコントロールを指定するだけのアプローチを使用しないのはなぜですか。たとえば、宣言は次のようになります

<foo:mycontrol runat="server" id="controlid" TargetControlId="pnlToCollapse" />

内部的に、mycontrol は FindControl メソッドを使用して、指定された TargetControlId のインスタンスを取得します (ここでは再帰バージョンです)。必要な 2 番目のパネルについても同じことができます。

したがって、サーバー コントロールは構成情報だけを受け取り、何もレンダリングしませんが、この場合は他のパネルのレンダリングを制御します。私の目には、はるかに柔軟なソリューションです。

于 2009-10-04T15:40:46.830 に答える