Introduction

   如果在现有的Asp.net Server controls里面没有一款符合你程序需求的,那么你可以选择使用 Web User Controls 或者 Web Custom Controls来建立一个新的符合你程序功能需求的控件。这两种Controls之间的主要区别就是前者易于创建,后者易于设计时使用。

Web User Controls vs. Web Custom Controls

   Web User Controls 易于创建,但是在高要求的时候它就显得不太方便了。其实创建 Web user controls 和开发 Web forms pages 的方法一样
。像开发 web forms pages一样,web user controls 可以在 visual designer 里面创建,可以在分离的 .cs 文件里面写代码,可以控制一些行为。因此,web user controls 是在运行的时候动态的编译创建的,它是不可以添加到 Toolbox 里面的,他们在加入到网页的时候仅仅显示一个 placeholder glyph(占位符字)。因此,如果你习惯了包括属性窗体,设计时预览等功能的 visual studio.net 的设计时支持,web user controls 显得很难使用。并且,唯一一个在程序之间共享用户控件的方法就是在每个工程中添加一个web user controls的副本。这样就造成了控件变动时的难于维护。

   Web custom controls 是编译好的代码,这就是他们易于使用,但是难于创建;web custom controls 必须在代码中声明。一旦你创建了这个空间,你就可以把她加入到 Toolbox 并且可以在像拥有全属性窗体支持和其他设计时选项的asp.net server controls一样的预览他。另外,你可以把一个单独的web custom controls 注册到 global assembly cache里面,让他在不同的程序中共享,这样可以让维护更加容易。想要获得更多的 global assembly cache的信息请参考http://msdn.microsoft.com/library/en-us/cpguide/html/cpconGlobalAssemblyCache.asp 

   如果你需要的controls 拥有大量的静态布局,那么 user controls 更加合适。如果你需要的controls需要大量的动态产生--例如数据绑定表格的行,tree view的一个节点或者tabs controls的一个tab,那么custom controls会是一个更好的选择。
   
他们主要的区别放在下面表中了:

Web user controls

Web custom controls

Easier to create

Harder to create

Limited support for consumers who use a visual design tool

Full visual design tool support for consumers

A separate copy of the control is required in each application

Only a single copy of the control is required, in the global assembly cache

Cannot be added to the Toolbox in Visual Studio

Can be added to the Toolbox in Visual Studio

Good for static layout

Good for dynamic layout