4

この質問をするのはとても恥ずかしいのですが、ここで...

私はユーザー コントロールの専門家ではないので、特定の目的の機能を実現するための設計に関するアドバイスが必要です。

目標は、エレガントなコンテナー ボックスを形成するために、html 要素と css の複雑な構造としてレンダリングされるユーザー コントロールを持つことです。問題は、ユーザーコントロールの各インスタンスが独自の個別の HTML コンテンツを持つため、ボックスのコンテンツを設定する方法にあります。ユーザー コントロールのコンテンツ コンテナー div は、レンダリングされた html の構造の奥深くにネストされます。ユーザーコントロールのコンテンツをプログラムで設定したり、プロパティを使用したりすることは望ましくありません。

疑似コードでは、望ましい構文は次のようになります。

<usercontrol Title="Some Title"><p>some random html content</p></usercontrol>

レンダリングされたユーザー コントロールのサンプルは次のようになります。

<div class="CommonBox">
    <div class="Title">Some Title</div>
    <div class="Content"><p>some random html content</p></div>
</div>

私の説明が適切であることを願っています。これは誰にとっても理にかなっていますか、それとも目的の機能は達成できませんか?

乾杯!

編集

まともな解決策に到達することを期待して、テンプレート化されたユーザー コントロールの提案を試みました。私はこのサイトを "ウェイバック"し 、テンプレート化されたユーザー コントロールが機能するようになりました。次の質問は、テンプレート内にネストされたコントロールにプログラムでアクセスするにはどうすればよいですか...リンク例の「説明」テンプレートにテキストボックスコントロールがあり、その値をプログラムで設定したいとしますか? これは可能ですか?

4

3 に答える 3

3

あなたが探しているものは間違いなく可能です。1 つの解決策は、templated user control. 最後に、例の外観と同様の内容を定義できます。何かのようなもの:

<uc:MyControl Title="Some TItle" runat="server">
    <ContentsTemplate>
        <p>some random html content</p>
    </ContentsTemplate>
</uc:MyControl>

ここに簡単なハウツーがあります。私は過去にこれを成功させました。このトピックについては、Googleからも多くのリソースが見つかりました。

于 2010-09-24T20:26:32.420 に答える
0

はい、これは非常に可能です。 最初に、この投稿で説明するように、カスタム コントロールを作成できます。 コントロールのプロパティは、例にある「タイトル」のような属性になります。次に、この投稿で示した手法を使用してコントロールを拡張し、必要な他の html 入力の子ノードを追加できます。

楽しみ!

于 2010-09-24T20:23:48.653 に答える
0

カスタム サーバー コントロールには 2 つのプロパティが必要なようです。

最初の内部 div のコンテンツをレンダリングするTitleプロパティ、

2つ目の内容。サーバー コントロール内にコンテンツを設定する場合は、次[PersistenceMode(PersistenceMode.InnerDefaultProperty)]のようにプロパティに属性を使用する必要があります。

[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public string Contents
{
    get
    {
        string contents = (string)ViewState["Contents"];
        return (contents == null) ? String.Empty : contents;
    }
    set
    {
        ViewState["Contents"] = value;
    }
}

PersistenceModeAttribute は MSDN で次のように説明されています。

PersistenceModeAttribute InnerDefaultProperty パラメーターを渡すと、ビジュアル デザイナーは、属性が適用されるプロパティを内部の既定のプロパティとして永続化する必要があることを指定します。これは、ビジュアル デザイナーがコントロールのタグ内のプロパティを永続化することを意味します。コントロールのタグ内で保持できるプロパティは 1 つだけなので、属性を適用できるプロパティは 1 つだけです。プロパティ値は特別なタグでラップされていません。

詳細については、こちらの最後の例をご覧ください。

于 2010-09-24T20:28:34.570 に答える