我正在尝试创建一个自定义服务器控件“CollapsablePanel”,它扩展了ASP.net的Panel。基本上我正在尝试做的是采用当前的Panel,添加标题栏和任何必要的JavaScript来添加折叠/展开功能。除此之外,我希望.aspx语法和常规面板功能保持不变。对于这种情况,是否存在某种最佳实践,或者我最终是否必须完全覆盖Panel的HTML输出的呈现方式?
谢谢,
麦克
答案 0 :(得分:3)
听起来我只想要派生一个新的Panel类,然后覆盖Render功能:
public class MyPanel : Panel
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<div id=\"" + base.ClientID + "\">");
writer.Write("..."); // Whatever else you want to render.
writer.Write("</div>");
}
}
答案 1 :(得分:2)
Asp.Net AJAX控件工具包包含一个听起来可能符合您需求的类:CollapsiblePanel
。
如果这不起作用,您可以考虑从CompositeControl
而不是直接从Panel
继承,因为听起来您希望您的控件包含Label
,一个Image
和一个Panel
至少。
从CompositeControl
继承的一个优点是,即使您必须自己实现某些渲染逻辑,您也可以将大多数实际的HTML渲染委托给子控件。一些有用的链接:
答案 2 :(得分:0)
您没有详细介绍如何扩展,超越基本概念,但您需要做的只是创建自己的,从Panel派生为基类。
class MyPanel : Panel
{
public MyPanel()
{
}
etc...
}