我正在尝试创建一个扩展 ASP.net 面板的自定义服务器控件“CollapsablePanel”。本质上,我要做的是采用当前面板,添加标题栏和任何必要的 javascript 以添加折叠/展开功能。除此之外,我希望 .aspx 语法和常规面板功能保持不变。对于这种情况是否有某种最佳实践,或者我最终是否必须完全覆盖 Panel 的 HTML 输出的呈现方式?
谢谢,
麦克风
我正在尝试创建一个扩展 ASP.net 面板的自定义服务器控件“CollapsablePanel”。本质上,我要做的是采用当前面板,添加标题栏和任何必要的 javascript 以添加折叠/展开功能。除此之外,我希望 .aspx 语法和常规面板功能保持不变。对于这种情况是否有某种最佳实践,或者我最终是否必须完全覆盖 Panel 的 HTML 输出的呈现方式?
谢谢,
麦克风
在我看来,您只想派生一个新的 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>");
}
}
Asp.Net AJAX Control Toolkit 包含一个听起来可能适合您需要的类:CollapsiblePanel
.
如果这不起作用,您可能会考虑从继承CompositeControl
而不是直接继承,Panel
因为听起来您希望您的控件至少包含 a Label
、 anImage
和 a 。Panel
继承自的一个优点CompositeControl
是,即使您必须自己实现一些呈现逻辑,您也可以将大部分实际的 HTML 呈现委托给子控件。一些有用的链接:
除了基本概念之外,您没有详细说明要如何扩展,但您需要做的只是制作自己的,从作为基类的 Panel 派生。
class MyPanel : Panel
{
public MyPanel()
{
}
etc...
}