0

我有一个中继器用作一种 Paging TagCloud。为此,我向 Page 的 ViewState 添加了简单的属性,例如 Page、RowCount 等……

我觉得它不属于那里,但我在服务器控制、调试、dll 和部署方面的经历很糟糕。

我可以只继承Repeater 类,添加一些ControlState/ViewState 属性,并能够完全像直接从工具箱中拖动的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

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

于 2009-06-17T14:36:14.020 回答
0

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

公共 int 行数
{

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

}

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

于 2009-06-17T14:38:06.557 回答
0

从 ASP 中继器继承是一种完全有效的方法,只要您正在构建的控件是具有附加属性的中继器。

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

例如,您可能希望拥有一个包含转发器、搜索结果标签、指向转发器内容顶部和底部的链接等的控件。此复合控件不是转发器,但确实使用了转发器.

于 2009-06-17T14:44:52.877 回答