构造块:Web 部件

上次修改时间: 2010年4月9日

适用范围: SharePoint Foundation 2010

本文内容
Web 部件的对象模型
Web 部件的 XML
与 Web 部件相关的区域
有关 Web 部件的详细信息

Web 部件是在 Microsoft SharePoint Foundation 网站页面上下文内运行的服务器端控件。可使用这些控件自定义用户界面 (UI) 和编辑网站页面的内容。Microsoft SharePoint Foundation 包括默认 Web 部件以及生成自定义 Web 部件的功能。SharePoint Foundation 中有两种支持的 Web 部件类型。这两种类型分别称作 SharePoint Web 部件和 ASP.NET Web 部件。ASP.NET Web 部件使用 System.Web.UI.WebControls.WebParts.WebPart 基类,而 SharePoint Web 部件使用 Microsoft.SharePoint.WebPartPages.WebPart 基类。这两种类型都受支持,但建议对所有新项目使用 ASP.NET Web 部件。

下面各节概述了不同类型的 Web 部件以及与其一起使用的 XML,并包括指向更多深入信息和演练的链接。

Web 部件的对象模型

SharePoint Foundation 中的 Web 部件基于 Microsoft ASP.NET Web 部件基础结构。若要为面向 SharePoint Foundation 的应用程序创建 Web 部件,应在 ASP.NET Web 部件基础结构之上构建自定义 Web 部件。不过在极少数情况下,可能必须创建支持在 ASP.NET Web 部件基础结构中不可用的 SharePoint Foundation 功能的 Web 部件。

ASP.NET Web 部件

ASP.NET Web 部件基础结构基于 WebPartManager 类,该类管理 Web 部件实例在运行时的生存期。

为了支持个性化,使用 Web 部件控件的每个 ASP.NET 页必须包含以下对象:

  • 正好一个 WebPartManager 对象,该对象跟踪向每个特定区域添加的 Web 部件,存储并检索有关每个 Web 部件自定义和个性化情况的数据。

  • 一个或多个 WebPartZone 对象,将在其中放入 Web 部件。

若要在 ASP.NET 应用程序中运行 SharePoint Foundation Web 部件,必须创建一个仅包含 WebPartManager 控件的一个实例和一个或多个 WebPartZone 控件的 .aspx 页。WebPartManager 负责序列化与 Web 部件相关的数据,并在数据库中存储和检索该数据。

SPWebPartManagerWebPartZone 控件管理如何在相应的 SharePoint Foundation 内容数据库中将与 Web 部件关联的数据进行序列化。若要能够永久保存数据,ASP.NET Web 部件必须置于具有这两个控件的网页上。

因为包含 Web 部件的页需要这些 SharePoint Foundation 特定的控件,所以不能简单地将您的 ASP.NET 页复制到 SharePoint Foundation 网站中。若要将 ASP.NET Web 部件从 ASP.NET 应用程序移动到 SharePoint Foundation 应用程序,应先将其从 ASP.NET 中作为 .webpart 文件导出,然后再导入到 SharePoint Foundation 网站中。

SharePoint Web 部件

SharePoint Foundation Web 部件基础结构使用了 ASP.NET Web 部件控件集中的许多控件,并引入了从 ASP.NET Web 部件控件集所提供的基类继承的若干个自有控件。

例如,SharePoint Foundation 网站的网站页面不使用标准的 ASP.NET WebPartManager 类,而使用从 ASP.NET WebPartManager 继承的 SharePoint Foundation 特定的 SPWebPartManager 类。

备注

SharePoint Foundation 附带的默认母版页包含 SPWebPartManager 类的实例,因此在所有 SharePoint Foundation 内容页中将会自动包含该控件。

同样,SharePoint Foundation 网站的 Web 部件页也使用继承自 ASP.NET WebPartZone 类的 SharePoint Foundation 特定的 WebPartZone 类。

Web 部件的 XML

SharePoint Foundation 中的 Web 部件使用多个 XML 节来在网站中配置、部署和保护它们。某些 XML 超出了本次讨论的范围,不过在本主题的结尾提供了指向相关信息的链接。

Web 部件定义

Web 部件定义 (.webpart) 文件是一个简单的 XML 文件,此文件包含单个 Web 部件的属性设置。若要将 Web 部件导入到 Web 部件页中,只需上载 .webpart 文件或将 Web 部件添加到 Web 部件库中即可。上载 Web 部件后,可以通过将此 Web 部件拖动到 Web 部件页的某个区域中来显示此 Web 部件。若要在导入 Web 部件后显示此 Web 部件的默认名称和说明,则应包含 Title 和 Description 属性。若要在导入过程中设置其他 Web 部件属性,也可以在 .webpart 文件中定义这些属性。.webpart 文件采用以下格式。

<?xml version="1.0" encoding="utf-8" ?> 
  <webParts>
     <webPart xmlns="https://schemas.microsoft.com/WebPart/v3">
       <metaData>
         <type name="TypeName, Version=VersionNumber, Culture=neutral, 
         PublicKeyToken=PublicKeyToken" /> 
         <importErrorMessage>Cannot import this Web 
         Part.</importErrorMessage> 
       </metaData>
       <data>
         <properties>
           <property name="Title" type="string">
              WebPartTitle
           </property>
           <property name="Description" type="string">
              WebPartDescription
           </property>
         </properties>
       </data>
     </webPart>
   </webParts>

SafeControl 项

为了阻止不受信任的用户在 ASPX 页中随意添加服务器端代码,SharePoint Foundation 提供了 SafeControls 列表。此 SafeControls 列表是一个包含特定于 SharePoint 网站的经批准的控件和 Web 部件的列表,您已将这些控件和 Web 部件指定为安全项目以便在您的网站中的任何 ASPX 页上进行调用。此列表包含在您的 Web 应用程序根目录的 web.config 文件中。SafeControl 项是具有下面格式的 Web 部件的基于 XML 的声明。

<SafeControl Assembly="AssemblyNameWithoutDLLExtension, Version=AssemblyVersionNumber, Culture=neutral, PublicKeyToken=PublicKeyToken" Namespace="NamespaceOfYourProject" TypeName="*" Safe="True" />

有关使用代码访问安全性的详细信息,请参见在 SharePoint Foundation 中部署 Web 部件

代码访问安全

代码访问安全 (CAS) 是 SharePoint Foundation 中的资源约束模型,可用于限制程序集对受保护的系统资源和操作进行的访问。SharePoint Foundation 具有默认安全策略,这些安全策略是基于 ASP.NET 的内置安全策略构建的。默认情况下,SharePoint Foundation 使用允许对系统资源进行最低程度的访问的一组权限,以便保护服务器和基础基础结构不受恶意代码影响。

用于 CAS 的 XML 不在本节讨论范围内。有关保护 Web 部件的详细信息,请参阅保护 SharePoint Foundation 中的 Web 部件

与 Web 部件相关的区域

构建基块:解决方案

构建基块:功能

有关 Web 部件的详细信息

SharePoint Foundation 中的 Web 部件

Developing Web Parts in SharePoint Foundation