WEB用户控件和WEB自定义控件的区别

来源:互联网 发布:网络成瘾的危害 编辑:程序博客网 时间:2024/05/02 02:43

很初学者对WEB用户控件和WEB自定义控件的区别不是很了解,经常把它们混为一谈,这两种控件之间的主要区别在于设计时的易创建性与易用性。

Web 用户控件易于创建,但它们在高级方案中使用起来可能不太方便。开发 Web 用户控件的方式与开发 Web 窗体页的方式几乎完全相同。与 Web 窗体相似,用户控件可以在可视化设计器中创建,可以使用与 HTML 隔离的代码来编写,并且可以处理执行事件。但是,由于 Web 用户控件在运行时动态地进行编译,所以不能将它们添加到工具箱中,而且它们在添加到页面上时由简单的占位符标志符号来表示。如果您习惯于完全的 Visual Studio .NET 设计时支持(包括“属性”窗口和“设计”视图预览),这将会使 Web 用户控件使用起来更不方便。此外,在应用程序之间共享用户控件的唯一方式是将一个单独的副本放入每个应用程序,因此如果对该控件作出了更改,将需要进行比较多的维护。

Web 自定义控件是编译的代码,这使得 Web 自定义控件更易于使用但更难于创建;Web 自定义控件必须使用代码来创建。一旦创建该控件,那么,您就可以将其添加到工具箱中,并在具有完全“属性”窗口支持和 ASP.NET 服务器控件的其他所有设计时功能的可视化设计器中显示该控件。此外,还可以在全局程序集缓存中安装 Web 自定义控件的单个副本,并在应用程序之间共享该副本,这将使维护变得更容易。

如果您的控件包含大量静态布局,用户控件则可能是较佳的选择。如果您的控件主要是动态生成的(例如数据绑定表的行、树视图的节点或选项卡控件的选项卡),自定义控件则可能是较佳的选择。

Web 用户控件 Web 自定义控件 易于创建 难于创建 为使用可视化设计工具的使用者提供有限的支持 为使用者提供完全的可视化设计工具支持 每个应用程序中需要控件的一个单独副本 仅在全局程序集缓存中需要控件的单个副本 不能添加到 Visual Studio 中的工具箱  可以添加到 Visual Studio 中的工具箱 适用于静态布局 适用于动态布局


 

 

 

 

自我感受 :
当静态实例化用户控件添加到页的时, 主要添加控件声明 <%@ Register TagPrefix="UC" TagName="TestControl" Src="test.ascx" %>与控件引用<UC:TestControl id="Test1" runat="server"/>.  当动态实例化用户控件添加到页的时, 除去掉上面两句外, 需要在Page _ Load 事件中写入代码 Control c1 = LoadControl("test.ascx") 与 Page.Controls.Add(c1).  但做了两个小例子后发现, 当添加的用户控件中包含服务器端控件就会报错,而添加的是HTML客户端控件就正常, 看来想实现这种动态加载还是有点小问题.(估计是我哪没注意到,以后遇到了再看看)

回想一下, 这种动态加载的方式在ASP.NET中用到很多,例如当我们不能确认从数据库读出的数据的数据格式时,我们会将HTML代码在后台拼好(拼成前台所要求显示的方式), 例如:
前台:  <div id ="Div1" runat =" server" > </div>
后台: this.Div1.InnerHtml = " <TABLE WIDTH=/"300/" BORDER=/"1/" CELLSPACING=/"1/" CELLPADDING=/"1/">"+"<TR><TD>1</TD><TD>2</TD><TD>3</TD></TR><TR>"+"<TD>4</TD><TD>5</TD><TD>6</TD></TR></TABLE>";
这样就可以实现动态的数据展现了.(很常用)

还有在VS2005做项目中觉得, 用户控件除了在做缓存方面还很常用外, 它的大多功能已经可由母模版页实现.

原创粉丝点击