Web Part 教程--深入理解 Web Part Manager 和 Zone

本文详细介绍了Web Part Manager的重要角色,包括管理Web Parts、处理个性化信息、控制生命周期事件等,并讨论了Zone的风格、布局及Web Part的授权、导入导出。此外,还涉及了Zone的自定义渲染和Chrome的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整个教程连接

Web Part 教程--简介
Web Part 教程--自定义 Web Part
Web Part 教程--Web Part 连接
Web Part 教程--深入理解 Web Part Manager & Zone

 

 四、深入理解 Web Part Manager & Zone   
    在前面三节中我们已经在 Web Part 方方面面的知识中溜达了一圈,对门户框架的上层应用有了较全面认识,现在要把目光放低,仔细看看 WebPartManager,您如果不是太粗心的话应该早就注意到它了,所有与 Web Part 相关的页面里都有它的身影,少了它页面就不会正常工作。
    WebPartManager 是一个典型的多面手,管理了一大堆的事务:
    i.跟踪 web parts,在 Zone 中添加、关闭、移动 web parts,跟踪哪些 parts 在哪些 zones 中。
    ii.管理个性化信息,初始化 web parts,载入和保存个性化信息。
    iii.控制生命期事件,创建 web parts,初始化连接。
    iv.切换页面显示模式。
    v.导入导出 web parts,对 web parts 进行系列化和反系列化。
    
    Web Part 页面生存期分为以下几个阶段:

  •     Init                WebZones 通过 WebPartManager.RegisterZone 进行注册,所有的静态 WebParts 都通过 WebPartZoneBase.GetInitialWebParts 载入
  •     InitComplete        从个性化数据中载入动态连接和动态 WebParts
  •     LoadComplete        激活连接并加载、转换数据
  •     PreRender           典型的编写页面逻辑以处理连接信息的时机
  •     SaveStateComplete   保存完个性化数据

    
    在前面已经接触过页面显示模式,关键的是 WebPartDisplayMode 类,可以通过继承他定义自己的显示模式。
    
    Web Part 的授权
    继承自 WebPart 的控件有一个属性 AuthorizationFilter,用来指定校验用的过滤条件,在 WebPartManager 里的 AuthorizeWebPart 事件里编写授权代码,在该事件的参数 WebPartAuthorizationEventArgs 中能够得到设置的控件过滤条件,把检查结果放到 IsAuthorized,以确定控件是否可见。
    
    Web Part 的导入和导出
    把 Web Part 序列化成 XML 导出,再在其他门户网站上导入,这大大加强了它的重用性和可移植性。
    允许导出要先编辑 web.config,在 system.web 节点中加入:

    
    其他 Web Part 的导出模式 (ExportMode)不能设置为 None,导出模式分为下面几种:

  •     All 所有属性和设置
  •     None 默认设置
  •     NonSensitiveData    只有标记为非敏感的属性和设置被导出

    
    要把属性标记为敏感是在个性化的时候把 Personalizable 中的 IsSensitive 参数设置为 true。

    
    导入导出时直接调用 WebPartManager 的方法 ExportWebPart、ImportWebPart。
    
    作业:ProxyWebPartManager 的使用场景?

    Zone

    Zone 的风格
    每个 Zone 都有一堆风格属性以自定义 Zone 的外观。
           
    Zone 的布局
    作为所有 Zone 的基类 WebZone 有四个方法,重载它们以实现自定义 Zone 的渲染,完全控制要显示的风格和布局。

  •         RenderContent
  •         RenderHeader
  •         RenderBody
  •         RenderFooter

        
    WebPartChrome
    Chrome 是 WebPartZone、EditorZone 和 CatalogZone 都用到的一个渲染元素,控制包含在这些 Zone 里控件的渲染,这样就可以自定义所有被包含 Web Part 的渲染而毋须自定义各 Web Part 本身的渲染。
    
    ----------------------------------------------------------------------------
    Zone         标准 Chrome  该 Chrome 的渲染成员
    ----------------------------------------------------------------------------

  •     WebPartZone WebPartChrome GetWebPartVerbs, RenderPartContents, RenderWebPart
  •     EditorZone EditorPartChrome RenderEditorPart, RenderPartContents
  •     CatalogZone CatalogPartChrome RenderCatalogPart, RenderCatalogPartContents

    
    这些标准 Chrome 定义了统一了这些 Zone 和里面 Web Part 的外观和观感,自定义 Chrome 需要从上面的标准 Chome 中继承。

 

    这一节写得比较潦草,也没有代码示例,见谅

    计划中后面还有一节关于个性化,如果有空有心情年后补上:)

    示例代码下载

 

参考资料

ASP.Net 2.0 Web Parts in Action
Professional Web Parts and Custom Controls with ASP.NET 2.0
Pro ASP.NET 3.5 Server Controls and AJAX Components

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值