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

17

我在最近的一次面试中认为自己对这个问题有合理的答案,但是结果我失败了。:(

  • 它们三者之间的主要区别是什么?
  • 如果前一个问题的答案不明显,那么在什么情况下您会选择其中一个?
2个回答

25
  • 用户控件是在 web 项目内使用设计器构建的控件。它们通常只供该 web 应用程序私有使用(尽管有办法使其对其他项目可用)。

  • 服务器控件也称为 Web 控件。这些可重复使用的控件可以在没有设计器的帮助下呈现其 HTML,并且它们是在与 web 应用程序分离的程序集中创建,适用于将在许多不同的 web 应用程序中使用的控件。

  • 组合控件是 Web 控件的一种子类型,由其他 Web 控件组成的控件。

我从未听说过自定义控件以外的其他含义,它包括用户、Web 或组合控件。


8
一个用户控件是一个部分网页,与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


用户控件不是网页,而且它也是编译过的。 - JoshBerke
用户控件是网页的一部分。 - John Saunders
Josh,我认为你在考虑自定义控件。请参见http://support.microsoft.com/kb/893667。 - Robert Harvey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接