整个教程连接
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 页面生存期分为以下几个阶段:
在前面已经接触过页面显示模式,关键的是 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,导出模式分为下面几种:
要把属性标记为敏感是在个性化的时候把 Personalizable 中的 IsSensitive 参数设置为 true。
[Personalizable(PersonalizationScope.User, true)] public string Secret ...
导入导出时直接调用 WebPartManager 的方法 ExportWebPart、ImportWebPart。
作业:ProxyWebPartManager 的使用场景?
Zone 的风格
每个 Zone 都有一堆风格属性以自定义 Zone 的外观。
Zone 的布局
作为所有 Zone 的基类 WebZone 有四个方法,重载它们以实现自定义 Zone 的渲染,完全控制要显示的风格和布局。
WebPartChrome
Chrome 是 WebPartZone、EditorZone 和 CatalogZone 都用到的一个渲染元素,控制包含在这些 Zone 里控件的渲染,这样就可以自定义所有被包含 Web Part 的渲染而毋须自定义各 Web Part 本身的渲染。
----------------------------------------------------------------------------
Zone 标准 Chrome 该 Chrome 的渲染成员
----------------------------------------------------------------------------
这些标准 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