有人能解释一下什么时候使用它们吗?在许多情况下,它们似乎可以互换使用。
自定义控件添加到工具栏中,而用户控件(ascx)则不能。自定义控件不会在设计器中呈现,而用户控件会。除此之外,如何选择正确的控件呢?
此外,我正在寻找最佳方法来从JavaScript访问控件(GetElementById)。因此,指向正确方向以添加客户端支持的指针将非常有帮助。
有人能解释一下什么时候使用它们吗?在许多情况下,它们似乎可以互换使用。
自定义控件添加到工具栏中,而用户控件(ascx)则不能。自定义控件不会在设计器中呈现,而用户控件会。除此之外,如何选择正确的控件呢?
此外,我正在寻找最佳方法来从JavaScript访问控件(GetElementById)。因此,指向正确方向以添加客户端支持的指针将非常有帮助。
Web用户控件
Web自定义控件
http://msdn.microsoft.com/en-us/library/aa651710(VS.71).aspx
我认为你所想的是自定义控件和用户控件,它们都是Web控件。用户控件没有设计师UI,而自定义控件可以有。
通常我们使用用户控件将我们的UI分成不同的功能区域。但是,如果我们创建的功能要在多个解决方案中使用,我们通常将它们创建为自定义控件。
只有自定义控件才能添加到工具箱中。
以下是Microsoft的摘录:
http://msdn.microsoft.com/en-us/library/aa651710(VS.71).aspx
要从JavaScript访问它们,您应该使用document.GetElementById('<%=TheControl.ClientID%>')
。
Web控件和用户控件之间的区别在于用户控件具有带有HTML定义的ascx文件,而Web控件没有;这是其他差异的原因。此外,对于用户控件,您不能使用new Control()
,而需要使用LoadControl
,因为它会加载.ascx文件。
对于从.Net控件继承的简单控件,例如带有验证的文本框或类似的控件,我倾向于使用Web控件;对于具有HTML和内部控件的更复杂的控件,我倾向于使用用户控件。但基本上这取决于个人喜好。
简单:
UserControl用户控件:
WebControl网页控件:
那并不完全正确。WebControl就像一个按钮,你可以为它构建一个设计器,以便在设计模式下呈现。
主要区别在于WebControl是一个原子单元。它应该像Visual Studio中找到的所有其他默认服务器控件一样工作(包括设计模式)。此外,它完全是用代码构建的,并存储在DLL中(即没有HTML部分,也没有发布到网站的内容)。
而用户控件是ASP Include的.NET版本。它有一个对应的代码后台页面和HTML片段。在发布期间,会将一个ASCX文件推送到网站上。另外需要注意的是,这些比服务器控件更容易开发。
哪个更好?这取决于目标是什么。但一般来说,如果您正在构建供其他人/项目使用的东西,请选择WebControl。如果您正在构建供自己项目使用的东西,请选择用户控件。
现在就 JavaScript 而言,这是一件比较难描述的事情,需要进行一次相当大的讨论。对于服务器控件而言,你需要提供钩子以使 JS 能够获取每个内部控件的客户端 ID。而对于用户控件,你可以直接在用户控件上编写 JS,并且以与 ASPX 页面中相同的方式访问控件。