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

很初学者对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做项目中觉得, 用户控件除了在做缓存方面还很常用外, 它的大多功能已经可由母模版页实现.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值