UserControl,WebControl,RenderedControl和CompositeControl有什么区别?

有什么区别,官方称谓是什么,ASP.NET 3.5中的任何条款都已经过时了吗?

UserControl :自定义控件,以.ascx结尾,由其他Web控件组成。 它几乎就像一个aspx网页的小版本。 它由一个UI(ascx)和代码隐藏组成。 不能通过引用DLL在其他项目中重用。

WebControl :托pipe在网页上或UserControl中的控件。 它由一个或多个类组成,并行工作,并托pipe在aspx页面或UserControl中。 WebControls没有UI“页面”,并且必须直接渲染其内容。 它们可以通过引用它们的DLL在其他应用程序中重用。

RenderedControl :不存在。 可能是WebControl的同义词。 可能表示控件直接写入HttpResponse而不是呈现给aspx页面。

CompositeControl :介于UserControls和WebControls之间。 它们像UserControls一样编码,因为它们由其他控件组成。 没有任何用于控制合成的graphicsUI,并且对CompositeControls的UI编辑的支持必须由控制devise者编码。 合成是在代码隐藏中完成的。 CompositeControls可以在WebControls等其他项目中重用。

你忘记了ServerControl。

在我的理解中是这样的:

  • 只有两种不同types的控件:UserControl和ServerControl
  • CompositeControls是一种“高级”UserControls。 在Scott Guthries博客上查找更多信息。
  • 所有这些都是WebControls(因为它们都是从System.Web.UI.Control派生的)
  • 他们都以任何方式呈现,所以我想看到他们所有提供的控制。

来自MSDN:

用户控制

在ASP.NET中:一种服务器控件,使用与ASP.NET页面相同的语法声明式创build,并保存为具有.ascx扩展名的文本文件。 用户控件允许分页和重用页面function。 在第一次请求时,页面框架将用户控件parsing为一个从System.Web.UI.UserControl派生的类,并将该类编译成一个程序集,并在随后的请求中重用。 用户控件由于其页面样式的创作和部署而不需要事先编译,很容易开发。

服务器控制

封装用户界面和相关function的服务器端组件。 ASP.NET服务器控件直接或间接从System.Web.UI.Control类派生。 ASP.NET服务器控件的超集包括Web服务器控件,HTML服务器控件和ASP.NET移动控件。 ASP.NET服务器控件的页面语法在控件的标签上包含runat =“server”属性。 另请参阅:HTML服务器控件,validation服务器控件,Web服务器控件。

像Web窗体一样,用户控件可以在可视化devise器中创build,也可以使用独立于HTML的代码编写。 他们也可以支持执行事件。 但是,由于Web用户控件是在运行时dynamic编译的,因此无法将其添加到工具箱,并且在添加到页面时,它们由一个简单的占位符表示。

如果您习惯于完整的Visual Studio .NETdevise时支持(包括“属性”窗口和“devise”视图预览),则这使Web用户控件更难使用。 在应用程序之间共享用户控件的唯一方法是在每个应用程序中放置一个单独的副本,如果对控件进行更改,则需要更多维护。

Web自定义控件是编译后的代码,这使得它们更容易使用,但更难以创build。 Web自定义控件必须在代码中进行创作。 一旦创build了控件,您可以将其添加到工具箱中,并将其显示在具有完整属性窗口支持和ASP.NET服务器控件的所有其他devise时function的可视化devise器中。 另外,您可以在全局程序集caching中安装Web自定义控件的单个副本,并在应用程序之间共享,从而使维护更加轻松。

与Will的反应相反,通过引用Web部署项目 ,可以在其他项目中重用UserControls。

由于我还没有足够的评论来评论,我将添加这个答案,但它是指威尔的答案上面。

从你包含的链接 :

复合控件是构build复杂组件的正确工具,在这些复杂组件中,多个子控件被聚合,并与外部世界进行交互。 渲染控件适合只读聚合控件,其中输出不包括交互式元素(如下拉菜单或文本框)。

我相信这个文档是通过把Render方法重写为Rendered Controls来创buildUserControl。 因此,它不是一个单独的types,而是一个实现UserControl的方法; 一种模式。