0

リピーターを一種のページング タグクラウドとして使用しています。そのために、Page、RowCount などの単純なプロパティを Page の ViewState に追加しました。

そこに属していないように感じますが、サーバーコントロール、デバッグ、dll、および展開で悪い経験をしました。

Repeater クラスを継承し、いくつかの ControlState/ViewState プロパティを追加して、ToolBox から直接ドラッグした Repeater として正確に使用できるようにすることはできますか?

ここでは、次の単純なクラスがあります。

    public class TagCloud : Repeater
{
    public int selectedIndex;

    public TagCloud()
    {
        selectedIndex = -1;
        //
        // TODO: Add constructor logic here
        //
    }

    public int SelectedIndex
    {
        get { return selectedIndex; }
        set { selectedIndex = value; }
    }
}

新しい WebControlLibrary プロジェクトを作成せずに、この cs ファイルを App_Code フォルダーに置き、期待どおりに動作させることはできますか?

ありがとう。

4

3 に答える 3

0

Yes, there is no problem doing this. As long as you use the control's property syntax:

public int RowCount
{

  get { return (int) (ViewState["RowCount"] ?? 0); }
  set { ViewState["RowCount"] = value; }

}

Also, to make your properties look the same as the default ones you can add Description or DefaultValue attributes.

于 2009-06-17T14:38:06.557 に答える
0

これは機能し、サーバー コントロールを構築するための推奨される方法の 1 つです。試してみてください。

于 2009-06-17T14:36:14.020 に答える
0

ASP Repeater からの継承は、構築しているコントロールが追加のプロパティを持つリピーターである限り、完全に有効なアプローチです。

必要なコントロールが、たまたまコントロール セットの一部としてリピーターを持っている「何か他のもの」であると思われる場合は、他のコントロールと一緒に、そのコントロール コレクションにリピーターを追加する複合コントロールを作成する必要があります。必要です。

たとえば、リピーター、検索結果のラベル、リピーターのコンテンツの上部と下部に移動するためのリンクなどを含むコントロールが必要になる場合があります。この複合コントロールはリピーターではありませんが、リピーターを使用します。 .

于 2009-06-17T14:44:52.877 に答える