Part 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用作所有“Web 部件”部件控件的基类,这些控件在 Web 窗体页上呈现模块化用户界面。
public ref class Part abstract : System::Web::UI::WebControls::Panel, System::Web::UI::INamingContainer, System::Web::UI::WebControls::ICompositeControlDesignerAccessor
public abstract class Part : System.Web.UI.WebControls.Panel, System.Web.UI.INamingContainer, System.Web.UI.WebControls.ICompositeControlDesignerAccessor
type Part = class
inherit Panel
interface INamingContainer
interface ICompositeControlDesignerAccessor
Public MustInherit Class Part
Inherits Panel
Implements ICompositeControlDesignerAccessor, INamingContainer
- 继承
- 派生
- 实现
示例
下面的代码示例通过使用 ASP.NET 网页中引用的 Part 自定义 WebPart 控件的两个实例,演示如何以声明方式使用 类的多个属性。 若要运行代码示例,必须编译此源代码。 可以显式编译它,并将生成的程序集放入网站的 Bin 文件夹或全局程序集缓存中。 或者,可以将源代码放在站点的“App_Code”文件夹中,并在运行时对其进行动态编译。 有关演示这两种编译方法的演练,请参阅 演练:开发和使用自定义 Web 服务器控件。
该示例的第一部分包含自定义控件的代码,名为 TextDisplayWebPart
。 由于 控件派生自 WebPart,因此它还继承 类提供的通用属性 Part ,并在此代码示例中演示了这些属性的用法。
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;
const string _subTitle = "Contoso, Ltd";
public TextDisplayWebPart()
{
this.AllowClose = false;
}
[
Personalizable(PersonalizationScope.User, true),
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))
{
this.ContentText = Page.Server.HtmlEncode(input.Text) + @"<br />";
// Clear the input textbox.
input.Text = String.Empty;
DisplayContent.Text = this.ContentText;
}
}
}
}
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
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
Me.ContentText = Page.Server.HtmlEncode(input.Text) + "<br />"
' Clear the input textbox.
input.Text = String.Empty
DisplayContent.Text = Me.ContentText
End If
End Sub
End Class
End Namespace
本示例的第二部分演示如何引用 ASP.NET 网页中的自定义部件控件。 请注意,各种 Part 属性以声明方式分配给自定义控件实例。 比较引用页面上两个实例的声明性代码,然后在浏览器中加载页面。 请注意各种属性如何影响控件的外观。 例如,在浏览器中加载页面后,控件的第二个实例 TextDisplayWebPart
显示为最小化,因为它的 ChromeState 属性值设置为 Minimized。
<%@ 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"
backcolor="#99cccc">
<parttitlestyle font-bold="true" forecolor="#ffffff" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart"
Description="A text content WebPart control."
ChromeType="TitleAndBorder"
width="350px" />
</zonetemplate>
</asp:webpartzone>
<asp:webpartzone
id="WebPartZone2"
runat="server"
backcolor="#99cccc">
<parttitlestyle font-bold="true" forecolor="#ffffff" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart2"
title = "Text Content WebPart 2"
Description="A text content WebPart control."
ChromeType="TitleOnly"
ChromeState="Minimized"
width="350px" />
</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"
backcolor="#99cccc">
<parttitlestyle font-bold="true" forecolor="#ffffff" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart"
Description="A text content WebPart control."
ChromeType="TitleAndBorder"
width="350px" />
</zonetemplate>
</asp:webpartzone>
<asp:webpartzone
id="WebPartZone2"
runat="server"
backcolor="#99cccc">
<parttitlestyle font-bold="true" forecolor="#ffffff" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart2"
title = "Text Content WebPart 2"
Description="A text content WebPart control."
ChromeType="TitleOnly"
ChromeState="Minimized"
width="350px" />
</zonetemplate>
</asp:webpartzone>
</form>
</body>
</html>
注解
类 Part 定义所有部件控件通用的属性,并使它们在网页上具有模块化且一致的外观。 这些常见属性包括围绕部件控件的部件版式或框架的标题、说明和特征。
属性 Title 指定部件控件的标题。 属性 Description 用于汇总部件控件的用途,并在控件的标题栏中显示为工具提示。 属性 ChromeType 指示围绕部件控件呈现哪种类型的边框,而 ChromeState 属性指示部件控件是正常呈现还是最小化。 部件控件的边框受包含它的区域的属性的影响;例如, PartChromeType 属性会影响区域中包含的所有部件控件的帧。
部件控件的一种类型是 WebPart 控件,该控件在相应的区域中呈现内容。 另一种类型是 EditorPart 控件,它提供用户界面 (UI) 控件,用于修改 (个性化) 单个 WebPart 控件。 第三种类型的部件控件是 CatalogPart 控件,它提供用户可以在网页中添加或删除的控件列表 WebPart 。
部件控件包含在区域中,所有这些控件都派生自抽象 WebZone 类。 区域负责组织其包含的部件控件。 每个区域还呈现自身的 UI 元素,包括页眉、页脚、标题栏和每个包含部件控件周围的 UI 元素,如边框。
注意
虽然部件控件通常驻留在区域中,但如果在网页的标记中以声明方式引用该控件,则有可能将部件控件放置在区域之外。 如果部件控件在网页上的区域之外声明,该控件仍可正常工作,但会丢失大部分 Web 部件功能。 例如,控件无法编辑,并且无法在运行时拖动到区域中。 请记住,在运行时,任何部件控件都不能从区域拖动并拖放到区域外部的页面,这一点也很有帮助。
下表显示了基本部件类型的一些示例及其相应的区域类型。
部件控件类型 | 区域类型 |
---|---|
WebPart | WebPartZone |
EditorPart | EditorZone |
CatalogPart | CatalogZone |
从 Part 类派生的各种部件控件以不同的方式处理继承的面向 UI 的属性。
WebPart 控件会替代多个继承的 UI 属性,并使用属性 (标记它们 Personalizable
以了解详细信息,请参阅 PersonalizableAttribute 类文档) ,该文档允许保存这些属性的值以供将来的浏览器会话使用,此功能称为个性化。 例如,如果以编程方式允许用户在运行时更新控件Title的 属性的值WebPart,则将 (假定启用了个性化设置(这是默认) )来对该值进行个性化设置。 控件继承自 Part 类和 类的WebControl多个 UI 属性WebPart的处理方式相同。
相比之下,其他部件控件(如 EditorPart 和 CatalogPart)则不支持对继承的 UI 属性进行个性化设置。 因此,不会为将来的浏览器会话保存以编程方式分配的属性值。 例如,如果以编程方式允许用户在运行时更新 PropertyGridEditorPart 控件的属性 Title ,则更新后的值会在控件关闭或浏览器会话结束后丢失。
为 和 CatalogPart 控件保存此类继承的 UI 属性EditorPart的值以便将来的浏览器会话的一种简单方法是以页面持久性格式声明属性值。 但是,这是一种静态方法,仍然不允许用户个性化属性值。 或者,如果要对继承的 UI 属性启用编程更新,以便用户可以在运行时对其进行个性化设置,则可以使用私有静态变量来保存属性值。 每次创建 或 CatalogPart 控件的新实例 EditorPart (例如,在处理控件Init的事件) 的方法中,可以将静态变量的值重新分配给相应的属性。 此方法使用户能够个性化 Web 部件应用程序的编辑 UI 和目录 UI。
实施者说明
通常,不应直接从 Part 类继承以开发自定义 Web 部件控件。 若要提供完整的 Web 部件功能,Web 部件控件集需要派生自 Part 类的类,即 WebPart、 EditorPart和 CatalogPart,因此应从它们派生以开发自定义控件。 但是,了解基 Part 类的行为仍然很重要,因为它提供所有其他部件类使用的一组通用属性。
属性
AccessKey |
获取或设置使您得以快速导航到 Web 服务器控件的访问键。 (继承自 WebControl) |
Adapter |
获取控件的浏览器特定适配器。 (继承自 Control) |
AppRelativeTemplateSourceDirectory |
获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 (继承自 Control) |
Attributes |
获取与控件的特性不对应的任意特性(只用于呈现)的集合。 (继承自 WebControl) |
BackColor |
获取或设置 Web 服务器控件的背景色。 (继承自 WebControl) |
BackImageUrl |
获取或设置面板控件背景图像的 URL。 (继承自 Panel) |
BindingContainer |
获取包含该控件的数据绑定的控件。 (继承自 Control) |
BorderColor |
获取或设置 Web 控件的边框颜色。 (继承自 WebControl) |
BorderStyle |
获取或设置 Web 服务器控件的边框样式。 (继承自 WebControl) |
BorderWidth |
获取或设置 Web 服务器控件的边框宽度。 (继承自 WebControl) |
ChildControlsCreated |
获取一个值,该值指示是否已创建服务器控件的子控件。 (继承自 Control) |
ChromeState |
获取或设置部件控件是处于最小化状态还是正常状态。 |
ChromeType |
获取或设置构成 Web 部件控件的框架的边框类型。 |
ClientID |
获取由 ASP.NET 生成的 HTML 标记的控件 ID。 (继承自 Control) |
ClientIDMode |
获取或设置用于生成 ClientID 属性值的算法。 (继承自 Control) |
ClientIDSeparator |
获取一个字符值,该值表示 ClientID 属性中使用的分隔符字符。 (继承自 Control) |
Context |
为当前 Web 请求获取与服务器控件关联的 HttpContext 对象。 (继承自 Control) |
Controls |
获取 ControlCollection 对象,该对象包含用户界面层次结构中指定服务器控件的子控件。 |
ControlStyle |
获取 Web 服务器控件的样式。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
ControlStyleCreated |
获取一个值,该值指示是否已为 Style 属性创建了 ControlStyle 对象。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
CssClass |
获取或设置由 Web 服务器控件在客户端呈现的级联样式表 (CSS) 类。 (继承自 WebControl) |
DataItemContainer |
如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。 (继承自 Control) |
DataKeysContainer |
如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。 (继承自 Control) |
DefaultButton |
获取或设置 Panel 控件中包含的默认按钮的标识符。 (继承自 Panel) |
Description |
获取或设置一条短语,该短语在部件控件的工具提示和目录中用来概述该部件控件的作用。 |
DesignMode |
获取一个值,该值指示是否正在使用设计图面上的一个控件。 (继承自 Control) |
Direction |
获取或设置在 Panel 控件中显示包含文本的控件的方向。 (继承自 Panel) |
Enabled |
获取或设置一个值,该值指示是否启用 Web 服务器控件。 (继承自 WebControl) |
EnableTheming |
获取或设置一个值,该值指示主题是否应用于该控件。 (继承自 WebControl) |
EnableViewState |
获取或设置一个值,该值指示服务器控件是否向发出请求的客户端保持自己的视图状态以及它所包含的任何子控件的视图状态。 (继承自 Control) |
Events |
获取控件的事件处理程序委托列表。 此属性为只读。 (继承自 Control) |
Font |
获取与 Web 服务器控件关联的字体属性。 (继承自 WebControl) |
ForeColor |
获取或设置 Web 服务器控件的前景色(通常是文本颜色)。 (继承自 WebControl) |
GroupingText |
获取或设置面板控件中包含的控件组的标题。 (继承自 Panel) |
HasAttributes |
获取一个值,该值指示控件是否具有特性集。 (继承自 WebControl) |
HasChildViewState |
获取一个值,该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置。 (继承自 Control) |
Height |
获取或设置 Web 服务器控件的高度。 (继承自 WebControl) |
HorizontalAlign |
获取或设置面板内容的水平对齐方式。 (继承自 Panel) |
ID |
获取或设置分配给服务器控件的编程标识符。 (继承自 Control) |
IdSeparator |
获取用于分隔控件标识符的字符。 (继承自 Control) |
IsChildControlStateCleared |
获取一个值,该值指示该控件中包含的控件是否具有控件状态。 (继承自 Control) |
IsEnabled |
获取一个值,该值指示是否启用控件。 (继承自 WebControl) |
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) |
SupportsDisabledAttribute |
获取一个值,该值指示在控件的 |
TabIndex |
获取或设置 Web 服务器控件的选项卡索引。 (继承自 WebControl) |
TagKey |
获取对应于此 Web 服务器控件的 HtmlTextWriterTag 值。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
TagName |
获取控件标记的名称。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
TemplateControl |
获取或设置对包含该控件的模板的引用。 (继承自 Control) |
TemplateSourceDirectory |
获取包含当前服务器控件的 Page 或 UserControl 的虚拟目录。 (继承自 Control) |
Title |
获取或设置部件控件的标题。 |
ToolTip |
获取或设置当鼠标指针悬停在 Web 服务器控件上时显示的文本。 (继承自 WebControl) |
UniqueID |
获取服务器控件的唯一的、以分层形式限定的标识符。 (继承自 Control) |
ValidateRequestMode |
获取或设置指示控件是否检查来自浏览器的客户端输入是否具有潜在危险值的值。 (继承自 Control) |
ViewState |
获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。 (继承自 Control) |
ViewStateIgnoresCase |
获取一个值,该值指示 StateBag 对象是否不区分大小写。 (继承自 Control) |
ViewStateMode |
获取或设置此控件的视图状态模式。 (继承自 Control) |
Visible |
获取或设置一个值,该值指示服务器控件是否作为 UI 呈现在页上。 (继承自 Control) |
Width |
获取或设置 Web 服务器控件的宽度。 (继承自 WebControl) |
Wrap |
获取或设置一个指示面板中的内容是否换行的值。 (继承自 Panel) |
方法
事件
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) |
为指定数据控件启用动态数据行为。 |