用户控件、服务器控件和自定义控件之间有啥区别?

Posted

技术标签:

【中文标题】用户控件、服务器控件和自定义控件之间有啥区别?【英文标题】:What are the differences between User Controls, Server Controls & Custom Controls?用户控件、服务器控件和自定义控件之间有什么区别? 【发布时间】:2010-11-02 21:37:34 【问题描述】:

在最近的一次采访中,我以为我对这个问题有合理的答案,但我轰炸了它。 :(

三者之间的主要区别是什么? 如果上一个项目符号的答案不明显,您什么时候会选择一个而不是另一个?

【问题讨论】:

【参考方案1】:

用户控件是使用设计器在 Web 项目中构建的控件。它们通常只对 Web 应用程序私有(尽管有一些方法可以使它们对其他项目可用)。

服务器控件是也称为 Web 控件的控件。这些是可重复使用的控件,无需设计人员的帮助即可呈现其 html,它们是在与 Web 应用程序分开的程序集中创建的,适用于将在许多不同的 Web 应用程序中使用的控件

复合控件是 Web 控件的子类型,是由其他 Web 控件组成(组合)的控件。

除了由您或您的团队自定义构建的控件之外,我从未听说过自定义控件意味着其他任何东西。它可以包括用户、Web 或复合控件。

【讨论】:

【参考方案2】:

用户控件是一个部分网页,其创建方式与 ASP.NET 中的任何其他网页相同,只是它具有 .ASCX 扩展名,并且可以嵌入到您的其他 ASPX 页面中。

用户控件在使用它们的网页中注册,如下所示:

<%@ Register TagPrefix="UC" TagName="TestControl" Src="test.ascx" %>

然后在要使用它们的网页中声明它们,如下所示:

<UC:TestControl id="Test1" runat="server"/>

自定义控件是在服务器上执行、公开对象模型和呈现标记文本(如 HTML 或 XML)的已编译代码组件,就像普通的 Web 窗体或用户控件一样。自定义控件是用 C# 或 VB 编写的,并且是从类中派生的

System.Web.UI.WebControls.WebControl 

服务器控件是在服务器上执行并将标记呈现给浏览器的控件。用户控件和自定义控件都是服务器控件的示例。

http://support.microsoft.com/kb/893667

【讨论】:

用户控件不是网页,也是编译的。 一个用户控件一个网页块。 乔希,我认为您正在考虑自定义控件。见support.microsoft.com/kb/893667

以上是关于用户控件、服务器控件和自定义控件之间有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

用户控件、自定义控件和组件有啥区别?

C# .net不同版本中winform控件 dataGrid /DataGrid/DataGridView 有啥区别

自定义服务器控件和用户控件之间是不是存在性能差异?

fileUp与fileUpload有啥区别

ASP.NET用户自定义控件

WPF 杂谈——自定义控件