• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Stand By .NET

.NET & SQL Server
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

第六章 自定义控件和用户控件

    用户控件模型适合创建内部、应用程序特定的控件;
    自定义(或编译过的)控件模型适合创建通用的和可再分发的控件。

    部署是选择两种控件模型最重要的考虑因素。
    自定义控件模型可以由单个应用程序使用,也可以在多个应用程序之间共享。配件可以在没有相关源代码的情况下,以其编译过的二进制的形式被部署和使用;
    用户控件模型是为单个应用程序的情况设计的,用户控件必须以源代码形式部署,.ascx文件(以及相关的code-behind,如果存在的话)必须复制到需要用户控件的每个应用程序中去,这些需求有增加维护成本的副作用。

    创建自定义控件的技术与创建用户控件的技术是大不相同的。
    自定义控件通过编写一个从System.Web.UI.Control中直接或间接派生的托管类而创建,自定义控件提供了有效的方法去对一个现有控件扩展新的、改进的功能。
    用户控件在运行期,动态编译时也间接的从System.Web.UI.Control派生而来,用户控件以.ascx文件的形式声明性创建,用户控件的创建方式(包括视图布局和声明的持久性)非常简单,适于快速应用开发(RAD)。
    注意:如需要扩展或修改现有控件功能,应从现有的控件派生自定义控件,不要把控件的实例置于用户控件中来添加其功能和行为,因为用户控件方式对现有的控件对象模型不会进行保留或启用。
    如果要通过结合多个现有控件来提供新功能,应考虑开发一个用户控件。

    内容和布局:自定义控件和用户控件为内容和布局提供不同的功能。控件的内容包括所有静态阿我那本和它所包含或自己内部提供的所有子控件,一个控件的布局提供其内容被显示的结构。
    自定义控件非常适用于通过编程方式生成的布局中所表现的动态内容。内容和布局主要依赖属性值和基于那些值得逻辑条件。在自定义控件代码中最好不要包含任何静态的硬编码(hard-coded)文本。任何文本的内容都可以通过string属性自定义。
    用户控件的布局在.ascx文件内创建时声明,当需要固定布局的相对静态的内容时,用户控件是更好的选择,实现一致的并容易修改的外观。

    设计期行为
    Visual Studio .NET为自定义控件提供了很大范围的RAD设计期能力,设计期行为覆盖了从设计期显示的简单定制、属性栅格中增强属性编辑到模板编辑和数据绑定等等。
    用户控件拥有很少的设计期支持,设计界面给所有用户控件提供了一个简单默认的设计期外观,这类似于位置标志符块中的外观。

    性能
    自定义控件和用户控件都是从相同的基类System.Web.UI.Control中间接地派生来的。用户控件的实现是声明性的,在页面中第一次使用它时,用户控件作为控件被解析并编译进配件中,此后,用户控件的行为就像任何其他编译的(或者自定义)控件一样,因此,在两个模型之间性能没有明显的区别。

    选择控件模型应该基于性能之外的因素来考虑,如:部署、创建、设计期支持。

posted on 2006-01-06 09:34  .............  阅读(155)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3