我需要创建一个自定义控件。
基本上,我希望创建一个轻量级(并且更好地使用jquery)手风琴控制。
开始做这样的事情有什么好的参考。我将从Panel
派生它,因为它非常相似(只需要在最后添加一些JS)但我希望它只能添加某种类型的控件。我无法找到有关自定义渲染控件的任何信息。
有人能指点我参考吗?另外,对于HTML中的ID
标记,您会使用UniqueID还是ClientID?
答案 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方法中的控件。