WebPart 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用作自定义 ASP.NET Web 部件控件的基类,从而 Part 基类功能添加一些附加用户界面 (UI) 属性、创建连接的能力以及个性化行为。
public ref class WebPart abstract : System::Web::UI::WebControls::WebParts::Part, System::Web::UI::WebControls::WebParts::IWebActionable, System::Web::UI::WebControls::WebParts::IWebEditable, System::Web::UI::WebControls::WebParts::IWebPart
public abstract class WebPart : System.Web.UI.WebControls.WebParts.Part, System.Web.UI.WebControls.WebParts.IWebActionable, System.Web.UI.WebControls.WebParts.IWebEditable, System.Web.UI.WebControls.WebParts.IWebPart
type WebPart = class
inherit Part
interface IWebPart
interface IWebActionable
interface IWebEditable
Public MustInherit Class WebPart
Inherits Part
Implements IWebActionable, IWebEditable, IWebPart
- 继承
- 派生
- 实现
示例
下面的代码示例演示如何创建 WebPart 控件并在网页中引用它。
示例的第一部分包含名为 的TextDisplayWebPart
自定义WebPart控件的代码。 此控件演示如何创建一个简单的自定义 WebPart 控件,使你能够访问 Web 部件控件集的功能。 若要运行代码示例,必须编译此源代码。 可以显式编译它,并将生成的程序集放入网站的 Bin 文件夹或全局程序集缓存中。 或者,可以将源代码放在站点的“App_Code”文件夹中,并在运行时对其进行动态编译。 此代码示例假定将源代码编译为程序集,将其放置在 Web 应用程序的 Bin 子文件夹中,并在网页中使用 指令引用程序集 Register
。 有关演示这两种编译方法的演练,请参阅 演练:开发和使用自定义 Web 服务器控件。
using System;
using System.Security.Permissions;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level=AspNetHostingPermissionLevel.Minimal)]
public class TextDisplayWebPart : WebPart
{
private String _contentText = null;
TextBox input;
Label DisplayContent;
public TextDisplayWebPart()
{
this.AllowClose = false;
}
[Personalizable(), WebBrowsable]
public String ContentText
{
get { return _contentText; }
set { _contentText = value; }
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
DisplayContent.BackColor =
System.Drawing.Color.LightBlue;
DisplayContent.Text = this.ContentText;
this.Controls.Add(DisplayContent);
input = new TextBox();
this.Controls.Add(input);
Button update = new Button();
update.Text = "Set Label Content";
update.Click += new EventHandler(this.submit_Click);
this.Controls.Add(update);
ChildControlsCreated = true;
}
private void submit_Click(object sender, EventArgs e)
{
// Update the label string.
if (!string.IsNullOrEmpty(input.Text))
{
_contentText = input.Text + @"<br />";
input.Text = String.Empty;
DisplayContent.Text = this.ContentText;
}
}
}
}
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, _
Level := AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level := AspNetHostingPermissionLevel.Minimal)> _
Public Class TextDisplayWebPart
Inherits WebPart
Private _contentText As String = Nothing
Private input As TextBox
Private DisplayContent As Label
Public Sub New()
Me.AllowClose = False
End Sub
<Personalizable(), WebBrowsable()> _
Public Property ContentText() As String
Get
Return _contentText
End Get
Set
_contentText = value
End Set
End Property
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
DisplayContent.Text = Me.ContentText
DisplayContent.BackColor = _
System.Drawing.Color.LightBlue
Me.Controls.Add(DisplayContent)
input = New TextBox()
Me.Controls.Add(input)
Dim update As New Button()
update.Text = "Set Label Content"
AddHandler update.Click, AddressOf Me.submit_Click
Me.Controls.Add(update)
ChildControlsCreated = True
End Sub
Private Sub submit_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' Update the label string.
If input.Text <> String.Empty Then
_contentText = input.Text & "<br />"
input.Text = String.Empty
DisplayContent.Text = Me.ContentText
End If
End Sub
End Class
End Namespace
本示例的第二部分演示如何在 ASP.NET 网页中引用 TextDisplayWebPart
控件。 请注意,许多不同的 WebPart 属性都可以以声明方式分配给自定义控件。
<%@ page language="C#" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"
Assembly="TextDisplayWebPartCS"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<asp:webpartzone
id="WebPartZone1"
runat="server"
title="Zone 1"
PartChromeType="TitleAndBorder">
<parttitlestyle font-bold="true" ForeColor="#3300cc" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart" />
</zonetemplate>
</asp:webpartzone>
</form>
</body>
</html>
<%@ page language="VB" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="TextDisplayWebPartVB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<asp:webpartzone
id="WebPartZone1"
runat="server"
title="Zone 1"
PartChromeType="TitleAndBorder">
<parttitlestyle font-bold="true" ForeColor="#3300cc" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart" />
</zonetemplate>
</asp:webpartzone>
</form>
</body>
</html>
注解
使用 Web 部件功能创建控件时,有两个基本选项。 可以创建派生自 类的 WebPart 自定义控件,也可以创建或使用其他服务器控件。 现有的 ASP.NET 控件、自定义服务器控件和用户控件都可以通过 (声明它们或以编程方式将它们添加到) WebPartZone 区域控件,从而在运行时与对象一起 GenericWebPart 包装并被视为真正的 WebPart 控件,从而为它们提供完整的 Web 部件功能。 有关详细信息,请参阅 类的文档 GenericWebPart 。 为了加快开发和最大程度地重用代码,使用现有服务器控件可能是一个不错的选择。 若要最大程度地以编程方式控制控件的行为和 Web 部件功能,创建继承自 类的 WebPart 自定义控件通常是最佳选择。
抽象 WebPart 类继承自基 Part 控件,并为所有 WebPart 控件提供基本元素。 类包括一组影响 UI 外观的通用属性。 AllowClose、AllowConnect、AllowEdit、、AllowHideAllowMinimize、 和 AllowZoneChange 属性各自指定是否允许 Web 应用程序的用户按照给定属性名称指示的方式与部件控件交互。 CatalogIconImageUrl、ChromeState、ChromeType、Description、Height、、HelpUrl、Hidden、Title、TitleIconImageUrl、TitleUrl、 和 Width 属性确定控件的大小、可见性、外观和支持内容 (,如控件) WebPart 标题和说明。
控件与其 Web 部件控件集中上下文的关系 WebPart 由属性决定,这些 WebPartManager属性保存对控件关联 WebPartManager 对象的引用,以及 Zone引用 WebZone 包含控件的 。 每页只能有一个 WebPartManager 控件,并且控件的每个实例 WebPart 一次只能驻留在一个 WebZone 内。
注意
控件 WebPart 可以放置在网页上的区域之外,但在这种情况下,它充当普通服务器控件,几乎会失去所有 Web 部件功能。
其他几个重要属性会影响控件的独特功能 WebPart 。 属性 AuthorizationFilter 允许开发人员设置可在运行时用作筛选器的任意字符串,以确定控件是否添加到页面。 与角色管理等功能一起使用时 AuthorizationFilter , 属性提供了一种有用的机制,用于基于定义的用户角色创建视图。 属性 ExportMode 指示在导出过程中,是导出控件上的所有可用属性数据,还是仅导出非敏感数据。 这样,出于安全目的,开发人员就可以区分敏感数据和非敏感数据。 属性 WebBrowsableObject 返回对控件实例的 WebPart 引用,以便 EditorPart 控件可以在页面处于编辑模式时对其进行编辑。 最后,有几个属性指示控件相对于页面其余部分的状态。 属性 IsClosed 指示控件是关闭 (并因此添加到 PageCatalogPart 对象) ,还是处于打开状态并在页面上可用。 属性 IsShared 指示控件是 (共享控件还是特定于用户的控件) ,这意味着该控件对网页的所有用户都可见。 属性IsStandalone指示控件当前是否包含在派生区域 ((如 WebPartZone) ) 中WebPartZoneBase。 值 false
指示控件位于区域中,因此具有完整的 Web 部件功能。 属性 IsStatic 指示控件是静态的还是动态的。 静态控件在网页的标记中声明,而动态控件以编程方式添加。
类 WebPart 还提供了几种方法,用于确定控件生命周期中不同点发生的情况。 例如,OnConnectModeChangedOnEditModeChanged和 方法都可以在派生类中重写,以便在与每个方法名称相对应的事件期间对控件内容的呈现提供编程控制。
派生自 WebPart 的类可以将对象添加到WebPartVerb集合。Verbs 谓词呈现在动作菜单中,该菜单显示在控件的 WebPart 标题栏中。 WebPartVerb 对象为常见用户操作(例如隐藏或最小化控件或显示帮助)提供简单的 UI 元素。
方法 CreateEditorParts 创建与 控件关联的任何自定义 EditorPart 控件的 WebPart 集合。 开发人员可以重写此方法,以便它创建专门用于编辑其 WebPart 控件的自定义控件。 当用户单击控件上的 WebPart 编辑谓词时,将调用 方法。
构造函数
WebPart() |
初始化该类供继承的类实例使用。 此构造函数只能由继承的类调用。 |
属性
AccessKey |
获取或设置使您得以快速导航到 Web 服务器控件的访问键。 (继承自 WebControl) |
Adapter |
获取控件的浏览器特定适配器。 (继承自 Control) |
AllowClose |
获取或设置一个值,该值指示最终用户是否可以在网页上关闭 WebPart 控件。 |
AllowConnect |
获取或设置一个值,该值指示 WebPart 控件是否允许其他控件与之形成连接。 |
AllowEdit |
获取或设置一个值,该值指示最终用户是否可以通过一个或多个 WebPart 控件提供的用户界面 (UI) 修改 EditorPart 控件。 |
AllowHide |
获取或设置一个值,该值指示是否允许最终用户隐藏 WebPart 控件。 |
AllowMinimize |
获取或设置一个值,该值指示最终用户是否可以最小化 WebPart 控件。 |
AllowZoneChange |
获取或设置一个值,该值指示用户是否可以在两个 WebPart 区域之间移动 WebPartZoneBase 控件。 |
AppRelativeTemplateSourceDirectory |
获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 (继承自 Control) |
Attributes |
获取与控件的特性不对应的任意特性(只用于呈现)的集合。 (继承自 WebControl) |
AuthorizationFilter |
获取或设置一个任意字符串,以确定 WebPart 控件是否已被授权添加至页中。 |
BackColor |
获取或设置 Web 服务器控件的背景色。 (继承自 WebControl) |
BackImageUrl |
获取或设置面板控件背景图像的 URL。 (继承自 Panel) |
BindingContainer |
获取包含该控件的数据绑定的控件。 (继承自 Control) |
BorderColor |
获取或设置 Web 控件的边框颜色。 (继承自 WebControl) |
BorderStyle |
获取或设置 Web 服务器控件的边框样式。 (继承自 WebControl) |
BorderWidth |
获取或设置 Web 服务器控件的边框宽度。 (继承自 WebControl) |
CatalogIconImageUrl |
获取或设置图像的 URL,该图像在控件目录中表示一个 Web 部件控件。 |
ChildControlsCreated |
获取一个值,该值指示是否已创建服务器控件的子控件。 (继承自 Control) |
ChromeState |
获取或设置部件控件是处于最小化状态还是正常状态。 |
ChromeType |
获取或设置构成 Web 部件控件的框架的边框类型。 |
ClientID |
获取由 ASP.NET 生成的 HTML 标记的控件 ID。 (继承自 Control) |
ClientIDMode |
获取或设置用于生成 ClientID 属性值的算法。 (继承自 Control) |
ClientIDSeparator |
获取一个字符值,该值表示 ClientID 属性中使用的分隔符字符。 (继承自 Control) |
ConnectErrorMessage |
获取在连接过程中发生错误时要向用户显示的错误消息。 |
Context |
为当前 Web 请求获取与服务器控件关联的 HttpContext 对象。 (继承自 Control) |
Controls |
获取 ControlCollection 对象,该对象包含用户界面层次结构中指定服务器控件的子控件。 (继承自 Part) |
ControlStyle |
获取 Web 服务器控件的样式。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
ControlStyleCreated |
获取一个值,该值指示是否已为 Style 属性创建了 ControlStyle 对象。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
CssClass |
获取或设置由 Web 服务器控件在客户端呈现的级联样式表 (CSS) 类。 (继承自 WebControl) |
DataItemContainer |
如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。 (继承自 Control) |
DataKeysContainer |
如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。 (继承自 Control) |
DefaultButton |
获取或设置 Panel 控件中包含的默认按钮的标识符。 (继承自 Panel) |
Description |
获取或设置一条短语,该短语在部件控件的工具提示和目录中用来概述该部件控件的作用。 |
DesignMode |
获取一个值,该值指示是否正在使用设计图面上的一个控件。 (继承自 Control) |
Direction |
获取或设置内容在控件中流动的水平方向。 |
DisplayTitle |
获取一个字符串,其中包含在 WebPart 控件实例的标题栏中实际显示的完整标题文本。 |
Enabled |
获取或设置一个值,该值指示是否启用 Web 服务器控件。 (继承自 WebControl) |
EnableTheming |
获取或设置一个值,该值指示主题是否应用于该控件。 (继承自 WebControl) |
EnableViewState |
获取或设置一个值,该值指示服务器控件是否向发出请求的客户端保持自己的视图状态以及它所包含的任何子控件的视图状态。 (继承自 Control) |
Events |
获取控件的事件处理程序委托列表。 此属性为只读。 (继承自 Control) |
ExportMode |
获取或设置是否可以导出所有、某些 WebPart 控件属性或不能导出该控件的任何属性。 |
Font |
获取与 Web 服务器控件关联的字体属性。 (继承自 WebControl) |
ForeColor |
获取或设置 Web 服务器控件的前景色(通常是文本颜色)。 (继承自 WebControl) |
GroupingText |
获取或设置面板控件中包含的控件组的标题。 (继承自 Panel) |
HasAttributes |
获取一个值,该值指示控件是否具有特性集。 (继承自 WebControl) |
HasChildViewState |
获取一个值,该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置。 (继承自 Control) |
HasSharedData |
获取一个值,该值指示 WebPart 控件是否有与之关联的任何共享个性化数据。 |
HasUserData |
获取一个值,该值指示 WebPart 控件是否有与之关联的任何用户个性化数据。 |
Height |
获取或设置区域的高度。 |
HelpMode |
获取或设置用于显示 WebPart 控件的帮助内容的用户界面 (UI) 的类型。 |
HelpUrl |
获取或设置指向 WebPart 控件的帮助文件的 URL。 |
Hidden |
获取或设置一个值,该值指示是否在网页上显示 WebPart 控件。 |
HorizontalAlign |
获取或设置面板内容的水平对齐方式。 (继承自 Panel) |
ID |
获取或设置分配给服务器控件的编程标识符。 (继承自 Control) |
IdSeparator |
获取用于分隔控件标识符的字符。 (继承自 Control) |
ImportErrorMessage |
获取或设置在导入 WebPart 控件时发生错误的情况下将显示的错误消息。 |
IsChildControlStateCleared |
获取一个值,该值指示该控件中包含的控件是否具有控件状态。 (继承自 Control) |
IsClosed |
获取一个值,该值指示 WebPart 控件当前在 Web 部件页上是否已关闭。 |
IsEnabled |
获取一个值,该值指示是否启用控件。 (继承自 WebControl) |
IsShared |
获取一个值,该值指示 WebPart 控件是否为共享控件,即对 Web 部件页的所有用户都可见。 |
IsStandalone |
获取一个值,该值指示 WebPart 控件是否是独立控件(即该控件不包含在 WebPartZoneBase 区域中)。 |
IsStatic |
获取一个值,该值指示 WebPart 控件是否为静态控件,即控件在 Web 部件页的标记中声明,而不是通过编程方式添加至页中。 |
IsTrackingViewState |
获取一个值,用于指示服务器控件是否会将更改保存到其视图状态中。 (继承自 Control) |
IsViewStateEnabled |
获取一个值,该值指示是否为该控件启用了视图状态。 (继承自 Control) |
LoadViewStateByID |
获取一个值,该值指示控件是否通过 ID 而不是索引参与加载其视图状态。 (继承自 Control) |
NamingContainer |
获取对服务器控件的命名容器的引用,此引用创建唯一的命名空间,以区分具有相同 ID 属性值的服务器控件。 (继承自 Control) |
Page |
获取对包含服务器控件的 Page 实例的引用。 (继承自 Control) |
Parent |
获取对页 UI 层次结构中服务器控件的父控件的引用。 (继承自 Control) |
RenderingCompatibility |
获取一个值,该值指定呈现的 HTML 将与之兼容的 ASP.NET 版本。 (继承自 Control) |
ScrollBars |
获取或设置 Panel 控件中滚动条的可见性和位置。 (继承自 Panel) |
Site |
获取容器信息,该容器在呈现于设计图面上时承载当前控件。 (继承自 Control) |
SkinID |
获取或设置要应用于控件的外观。 (继承自 WebControl) |
Style |
获取将在 Web 服务器控件的外部标记上呈现为样式特性的文本特性的集合。 (继承自 WebControl) |
Subtitle | |
SupportsDisabledAttribute |
获取一个值,该值指示在控件的 |
TabIndex |
获取或设置 Web 服务器控件的选项卡索引。 (继承自 WebControl) |
TagKey |
获取对应于此 Web 服务器控件的 HtmlTextWriterTag 值。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
TagName |
获取控件标记的名称。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
TemplateControl |
获取或设置对包含该控件的模板的引用。 (继承自 Control) |
TemplateSourceDirectory |
获取包含当前服务器控件的 Page 或 UserControl 的虚拟目录。 (继承自 Control) |
Title |
获取或设置部件控件的标题。 |
TitleIconImageUrl |
获取或设置图像的 URL,该图像用于在控件的标题栏中表示 Web 部件控件。 |
TitleUrl |
获取或设置有关 WebPart 控件补充信息的 URL。 |
ToolTip |
获取或设置当鼠标指针悬停在 Web 服务器控件上时显示的文本。 (继承自 WebControl) |
UniqueID |
获取服务器控件的唯一的、以分层形式限定的标识符。 (继承自 Control) |
ValidateRequestMode |
获取或设置指示控件是否检查来自浏览器的客户端输入是否具有潜在危险值的值。 (继承自 Control) |
Verbs |
获取与 WebPart 控件关联的自定义谓词的集合。 |
ViewState |
获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。 (继承自 Control) |
ViewStateIgnoresCase |
获取一个值,该值指示 StateBag 对象是否不区分大小写。 (继承自 Control) |
ViewStateMode |
获取或设置此控件的视图状态模式。 (继承自 Control) |
Visible |
获取或设置一个值,该值指示服务器控件是否作为 UI 呈现在页上。 (继承自 Control) |
WebBrowsableObject |
获取对 WebPart 控件的引用,以使该控件可由自定义 EditorPart 控件进行编辑。 |
WebPartManager |
获取对与 WebPartManager 控件实例关联的 WebPart 控件的引用。 |
Width |
获取或设置 Web 服务器控件的宽度。 |
Wrap |
获取或设置一个指示面板中的内容是否换行的值。 (继承自 Panel) |
Zone |
获取当前包含 WebPartZoneBase 控件的 WebPart 区域。 |
ZoneIndex |
获取 WebPart 控件在其区域内的索引位置。 |
方法
事件
DataBinding |
当服务器控件绑定到数据源时发生。 (继承自 Control) |
Disposed |
当从内存释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生存期的最后阶段。 (继承自 Control) |
Init |
当服务器控件初始化时发生;初始化是控件生存期的第一步。 (继承自 Control) |
Load |
当服务器控件加载到 Page 对象中时发生。 (继承自 Control) |
PreRender |
在加载 Control 对象之后、呈现之前发生。 (继承自 Control) |
Unload |
当服务器控件从内存中卸载时发生。 (继承自 Control) |
显式接口实现
扩展方法
FindDataSourceControl(Control) |
返回与指定控件的数据控件关联的数据源。 |
FindFieldTemplate(Control, String) |
返回指定控件的命名容器中指定列的字段模板。 |
FindMetaTable(Control) |
返回包含数据控件的元表对象。 |
GetDefaultValues(INamingContainer) |
为指定数据控件获取默认值的集合。 |
GetMetaTable(INamingContainer) |
为指定数据控件获取表元数据。 |
SetMetaTable(INamingContainer, MetaTable) |
为指定数据控件设置表元数据。 |
SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
为指定数据控件设置表元数据和默认值映射。 |
SetMetaTable(INamingContainer, MetaTable, Object) |
为指定数据控件设置表元数据和默认值映射。 |
TryGetMetaTable(INamingContainer, MetaTable) |
确定表元数据是否可用。 |
EnableDynamicData(INamingContainer, Type) |
为指定数据控件启用动态数据行为。 |
EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
为指定数据控件启用动态数据行为。 |
EnableDynamicData(INamingContainer, Type, Object) |
为指定数据控件启用动态数据行为。 |