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

整个教程连接

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 节点中加入:
<webParts enableExport="true"> </webParts>
    
    其他 Web Part 的导出模式 (ExportMode)不能设置为 None,导出模式分为下面几种:

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

    
    要把属性标记为敏感是在个性化的时候把 Personalizable 中的 IsSensitive 参数设置为 true。
[Personalizable(PersonalizationScope.User, true)] public string Secret ...
    
    导入导出时直接调用 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

你可能感兴趣的:(Web Part 教程--深入理解 Web Part Manager 和 Zone)