我正在使用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文件夹中并按预期工作?
感谢。
答案 0 :(得分:0)
这是有效的,并且是构建服务器控件的一种建议方法。试试吧,看看。
答案 1 :(得分:0)
是的,这样做没有问题。只要您使用控件的属性语法:
public int RowCount
{
get { return (int) (ViewState["RowCount"] ?? 0); }
set { ViewState["RowCount"] = value; }
}
此外,要使您的属性看起来与默认属性相同,您可以添加Description或DefaultValue属性。
答案 2 :(得分:0)
继承ASP Repeater是一种完全有效的方法,只要您构建的控件是具有其他属性的转发器。
如果您觉得您需要的控件实际上是“其他”,恰好将转发器作为其控件集的一部分,那么您可能需要制作一个复合控件,在其控件集合中添加转发器,以及任何需要其他控制。
例如,您可能希望控件具有转发器,搜索结果标签,转到转发器内容顶部和底部的链接等。此复合控件不是转发器,但是使用转发器。