开始构建自定义渲染控件的最佳方法是什么?

时间:2009-12-08 22:06:29

标签: asp.net custom-controls

我需要创建一个自定义控件。

基本上,我希望创建一个轻量级(并且更好地使用jquery)手风琴控制。

开始做这样的事情有什么好的参考。我将从Panel派生它,因为它非常相似(只需要在最后添加一些JS)但我希望它只能添加某种类型的控件。我无法找到有关自定义渲染控件的任何信息。

有人能指点我参考吗?另外,对于HTML中的ID标记,您会使用UniqueID还是ClientID?

3 个答案:

答案 0 :(得分:1)

任何好的ASP.NET书都应该有一章专门讨论自定义控件。如果你想要做的只是在面板上添加一些JS,我认为你可以这样做:

public class AccordianPanel : System.Web.UI.WebControls.Panel
{
    protected override void OnPreRender(EventArgs e)
    {
        base.Render(writer);
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "accordianscript", ScriptText);
    }
}

或创建一个除了面板和ascx中的javascript之外的用户控件。限制允许的控制最多也是有问题的......

对于ID,始终使用ClientID引用客户端脚本中的控件。

答案 1 :(得分:0)

我会考虑使用AjaxControlToolkit,并查看那里的文档(在asp.net上),了解如何使用它来创建自定义控件或扩展器。这样可以轻松创建自定义控件,并且可以在这些组件中嵌入JQuery。 ACT提供所有管道;使用MS ajax框架并将所有内容链接在一起的工作量较少。

我已经使用它并且效果很好,但我必须承认我最近在我的自定义框架(http://www.codeplex.com/nucleo)中为我的AJAX组件取消了它。这是出于其他原因。

答案 2 :(得分:0)

我错过了你的一部分问题;要验证仅允许某些控件,您可以覆盖添加控件时调用的AddedControl方法。您可以在此方法中验证控件类型。

或者,大多数控件实现自定义控件集合,我相信有一个CreateControlCollection可用于创建自定义控件。此自定义控件集合验证Add / AddAt方法中的控件。