以简单的方式继承Web服务器控件?

时间:2009-06-17 14:30:30

标签: c# asp.net custom-server-controls

我正在使用Repeater作为一种Paging TagCloud。为此,我为Page的ViewState添加了简单属性,例如Page,RowCount等......

我觉得它不属于那里,但我在服务器控件,调试,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文件夹中并按预期工作?

感谢。

3 个答案:

答案 0 :(得分:0)

这是有效的,并且是构建服务器控件的一种建议方法。试试吧,看看。

答案 1 :(得分:0)

是的,这样做没有问题。只要您使用控件的属性语法:

public int RowCount
{

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

}

此外,要使您的属性看起来与默认属性相同,您可以添加Description或DefaultValue属性。

答案 2 :(得分:0)

继承ASP Repeater是一种完全有效的方法,只要您构建的控件是具有其他属性的转发器。

如果您觉得您需要的控件实际上是“其他”,恰好将转发器作为其控件集的一部分,那么您可能需要制作一个复合控件,在其控件集合中添加转发器,以及任何需要其他控制。

例如,您可能希望控件具有转发器,搜索结果标签,转到转发器内容顶部和底部的链接等。此复合控件不是转发器,但是使用转发器。