使用 Web 部件功能创建控件时,有两种基本选择。可以创建从 WebPart 类派生的自定义控件,也可以创建或使用其他服务器控件。通过在 WebPartZone 区域控件中声明(或以编程方式添加)现有 ASP.NET 控件、自定义服务器控件和用户控件可为这些控件赋予完全的 Web 部件功能,结果是在运行时以 GenericWebPart 对象包装这些控件并将其视为真正的 WebPart 控件。有关详细信息,请参见 GenericWebPart 类的文档。要加快开发速度并最大程度地重用代码,使用现有服务器控件无疑是一个好的选择。为了以编程方式最大程度地控制控件的行为和 Web 部件功能,创建继承自 WebPart 类的自定义控件通常是最佳做法。
WebPart 抽象类继承自 Part 基控件,并为所有 WebPart 控件提供基本元素。该类包括一组影响用户界面外观的常用属性。AllowClose、AllowConnect、AllowEdit、AllowHide、AllowMinimize 和 AllowZoneChange 属性分别指定是否允许 Web 应用程序的用户以给定属性名所指示的方式与部件控件交互。CatalogIconImageUrl、ChromeState、ChromeType、Description、Height、HelpUrl、Hidden、Title、TitleIconImageUrl、TitleUrl 和 Width 属性确定 WebPart 控件的大小、可见性、外观和支持内容(如标题和说明)。
WebPart 控件与其在 Web 部件控件集内的上下文之间的关系由 WebPartManager(该属性包含对该控件的关联 WebPartManager 对象的引用)和 Zone(该属性引用包含该控件的 WebZone)等属性确定。每页只能有一个 WebPartManager 控件,并且 WebPart 控件的每个实例在同一时刻只能驻留在一个 WebZone 中。
注意 |
|---|
| WebPart 控件可置于网页中 Web 部件区域的外部,但在这种情况下,该控件的作用将与普通服务器控件一样,几乎丧失 Web 部件的所有功能。 |
其他几个重要属性也会影响 WebPart 控件的独有功能。AuthorizationFilter 属性允许开发人员设置任意字符串,在运行时可使用该字符串作为筛选器来确定是否向页中添加了控件。AuthorizationFilter 属性与某一功能(如角色管理)结合使用,可提供用于根据已定义用户角色创建视图的有用机制。ExportMode 属性指示在导出过程中是导出控件上所有可用的属性数据还是只导出非敏感数据。这样开发人员便可以出于安全目的区分敏感数据和非敏感数据。WebBrowsableObject 属性可返回对 WebPart 控件的一个实例的引用,以使 EditorPart 控件可在页面处于编辑模式时对该实例进行编辑。最后,还有几个属性用来指示控件相对于页面其余部分的状态。IsClosed 属性指示控件已关闭(因此,可将其添加到 PageCatalogPart 对象中),还是已打开并可在页中使用。IsShared 属性指示控件是否是共享控件(与用户特定的控件相对),是共享控件意味着网页的所有用户都可以看到该控件。IsStandalone 属性指示控件当前是否包含在从 WebPartZoneBase 派生的区域中(例如 WebPartZone)。值 false 指示控件处于区域内,因此具有完全的 Web 部件功能。IsStatic 属性指示控件是静态的还是动态的。静态控件在网页的标记中声明,而动态控件是以编程方式添加的。
WebPart 类还提供了几种用于确定在控件生命周期的各个点所发生事情的方法。例如,OnConnectModeChanged 和 OnEditModeChanged 方法都可以在派生类中重写,以便在与每个方法名对应的事件的进行过程中通过编程方式控制控件内容的呈现。
从 WebPart 派生的类可以向 Verbs 集合中添加 WebPartVerb 对象。谓词在 WebPart 控件标题栏的谓词菜单中呈现。WebPartVerb 对象提供了用于常用用户操作(如隐藏或最小化控件或显示帮助)的简单用户界面元素。
CreateEditorParts 方法创建与 WebPart 控件关联的任意自定义 EditorPart 控件的集合。开发人员可以重写此方法,以创建专门用于编辑他们的 WebPart 控件的自定义控件。当用户单击 WebPart 控件上的编辑谓词时,将调用该方法。