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 区域控件中声明这些控件(或以编程方式将它们添加到)中来提供完整的 Web 部件功能,因此它们将在运行时用 GenericWebPart 对象包装,并被视为真正的 WebPart 控件。 有关详细信息,请参阅 GenericWebPart 类的文档。 为了加快开发和最大重用代码的速度,使用现有服务器控件是一个很好的选择。 若要对控件的行为和 Web 部件功能进行最大编程控制,请创建自定义控件,该控件继承自 WebPart 类通常是最佳选项。
抽象 WebPart 类继承自基 Part 控件,并为所有 WebPart 控件提供基本元素。 该类包含一组影响 UI 外观的常见属性。 AllowClose、AllowConnect、AllowEdit、AllowHide、AllowMinimize和 AllowZoneChange 属性分别指定是否允许 Web 应用程序的用户以给定属性名称指示的方式与部件控件进行交互。 CatalogIconImageUrl、ChromeState、ChromeType、Description、Height、HelpUrl、Hidden、Title、TitleIconImageUrl、TitleUrl和 Width 属性确定 WebPart 控件的大小、可见性、外观和支持内容(如标题和支持)。
WebPart 控件与其 Web 部件控件集中上下文的关系由属性(如 WebPartManager)决定,这些属性包含对控件关联 WebPartManager 对象的引用,以及引用包含控件的 WebZone 的 Zone。 每个页面只能有一个 WebPartManager 控件,WebPart 控件的每个实例一次只能驻留在一个 WebZone 内。
注意
WebPart 控件可以放置在网页上的区域之外,但在这种情况下,它充当普通服务器控件并丢失几乎所有的 Web 部件功能。
其他几个重要属性会影响 WebPart 控件的独特功能。
AuthorizationFilter 属性允许开发人员设置一个任意字符串,该字符串可在运行时用作筛选器,以确定控件是否添加到页面。 与角色管理等功能一起使用,AuthorizationFilter 属性提供了一种有用的机制,用于基于定义的用户角色创建视图。
ExportMode 属性指示导出控件上的所有可用属性数据是导出还是仅导出非敏感数据。 这样,开发人员就可以区分敏感数据和不出于安全目的的数据。
WebBrowsableObject 属性返回对 WebPart 控件实例的引用,以便当页面处于编辑模式时,EditorPart 控件可以对其进行编辑。 最后,有几个属性指示控件相对于页面其余部分的状态。
IsClosed 属性指示控件是关闭的(从而添加到 PageCatalogPart 对象),还是控件在页面上处于打开状态且可用。
IsShared 属性指示控件是否为共享控件(而不是特定于用户的控件),这意味着该控件对网页的所有用户可见。
IsStandalone 属性指示控件当前是否包含在 WebPartZoneBase派生区域(如 WebPartZone)。
false
值指示控件位于区域内,因此具有完整的 Web 部件功能。
IsStatic 属性指示控件是静态还是动态的。 静态控件在网页的标记中声明,而动态控件以编程方式添加。
WebPart 类还提供几种方法,用于确定控件生命周期中各个点发生的情况。 例如,可以在派生类中重写 OnConnectModeChanged 和 OnEditModeChanged 方法,以便在与每个方法名称相对应的事件期间提供控件内容的呈现编程控件。
派生自 WebPart 的类可以将 WebPartVerb 对象添加到 Verbs 集合。 谓词呈现在谓词菜单中,该菜单显示在 WebPart 控件的标题栏中。 WebPartVerb 对象为常见用户操作提供简单的 UI 元素,例如隐藏或最小化控件或显示帮助。
CreateEditorParts 方法创建与 WebPart 控件关联的任何自定义 EditorPart 控件的集合。 开发人员可以重写此方法,以便它创建专为编辑其 WebPart 控件而设计的自定义控件。 当用户单击 WebPart 控件上的编辑谓词时,将调用该方法。
构造函数
WebPart() |
初始化类以供继承的类实例使用。 此构造函数只能由继承的类调用。 |
属性
AccessKey |
获取或设置访问密钥,使你能够快速导航到 Web 服务器控件。 (继承自 WebControl) |
Adapter |
获取控件的特定于浏览器的适配器。 (继承自 Control) |
AllowClose |
获取或设置一个值,该值指示最终用户是否可以关闭网页上的 WebPart 控件。 |
AllowConnect |
获取或设置一个值,该值指示 WebPart 控件是否允许其他控件形成与其的连接。 |
AllowEdit |
获取或设置一个值,该值指示最终用户是否可以通过一个或多个 EditorPart 控件提供的用户界面(UI)修改 WebPart 控件。 |
AllowHide |
获取或设置一个值,该值指示是否允许最终用户隐藏 WebPart 控件。 |
AllowMinimize |
获取或设置一个值,该值指示最终用户是否可以最小化 WebPart 控件。 |
AllowZoneChange |
获取或设置一个值,该值指示用户是否可以在 WebPartZoneBase 区域之间移动 WebPart 控件。 |
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 |
获取或设置表示控件目录中的 Web 部件控件的图像的 URL。 |
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 |
获取一个值,该值指示是否已为 ControlStyle 属性创建 Style 对象。 此属性主要由控件开发人员使用。 (继承自 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 |
获取对页面控件层次结构中服务器控件的父控件的引用。 (继承自 Control) |
RenderingCompatibility |
获取一个值,该值指定呈现的 HTML 将与 ASP.NET 版本兼容。 (继承自 Control) |
ScrollBars |
获取或设置滚动条在 Panel 控件中的可见性和位置。 (继承自 Panel) |
Site |
获取有关在设计图面上呈现时承载当前控件的容器的信息。 (继承自 Control) |
SkinID |
获取或设置要应用于控件的皮肤。 (继承自 WebControl) |
Style |
获取文本属性的集合,该属性将在 Web 服务器控件的外部标记上呈现为样式属性。 (继承自 WebControl) |
Subtitle | |
SupportsDisabledAttribute |
获取一个值,该值指示当控件的 IsEnabled 属性 |
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 |
获取对与 WebPart 控件实例关联的 WebPartManager 控件的引用。 |
Width |
获取或设置 Web 服务器控件的宽度。 |
Wrap |
获取或设置一个值,该值指示内容是否包装在面板中。 (继承自 Panel) |
Zone |
获取当前包含 WebPart 控件的 WebPartZoneBase 区域。 |
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, IDictionary<String,Object>) |
设置指定数据控件的表元数据和默认值映射。 |
SetMetaTable(INamingContainer, MetaTable, Object) |
设置指定数据控件的表元数据和默认值映射。 |
SetMetaTable(INamingContainer, MetaTable) |
设置指定数据控件的表元数据。 |
TryGetMetaTable(INamingContainer, MetaTable) |
确定表元数据是否可用。 |
EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
为指定的数据控件启用动态数据行为。 |
EnableDynamicData(INamingContainer, Type, Object) |
为指定的数据控件启用动态数据行为。 |
EnableDynamicData(INamingContainer, Type) |
为指定的数据控件启用动态数据行为。 |