请单击以进行评分并提供反馈
MSDN
MSDN Library
.NET 开发
先前版本
WebPart 类
全部折叠/全部展开 全部折叠
此页面仅适用于
Microsoft Visual Studio 2005/.NET Framework 2.0

同时提供下列产品的其他版本:
.NET Framework 类库
WebPart 类

注意:此类在 .NET Framework 2.0 版中是新增的。

用作自定义 ASP.NET Web 部件控件的基类,为 Part 基类功能添加了一些附加用户界面 (UI) 属性、创建连接的能力和个性化行为。

命名空间:System.Web.UI.WebControls.WebParts
程序集:System.Web(在 system.web.dll 中)

Visual Basic(声明)
Public MustInherit Class WebPart
    Inherits Part
    Implements IWebPart, IWebActionable, IWebEditable
Visual Basic(用法)
Dim instance As WebPart
C#
public abstract class WebPart : Part, IWebPart, IWebActionable, IWebEditable
C++
public ref class WebPart abstract : public Part, IWebPart, IWebActionable, IWebEditable
J#
public abstract class WebPart extends Part implements IWebPart, IWebActionable, 
    IWebEditable
JScript
public abstract class WebPart extends Part implements IWebPart, IWebActionable, 
    IWebEditable

使用 Web 部件功能创建控件时,有两种基本选择。可以创建从 WebPart 类派生的自定义控件,也可以创建或使用其他服务器控件。通过在 WebPartZone 区域控件中声明(或以编程方式添加)现有 ASP.NET 控件、自定义服务器控件和用户控件可为这些控件赋予完全的 Web 部件功能,结果是在运行时以 GenericWebPart 对象包装这些控件并将其视为真正的 WebPart 控件。有关详细信息,请参见 GenericWebPart 类的文档。要加快开发速度并最大程度地重用代码,使用现有服务器控件无疑是一个好的选择。为了以编程方式最大程度地控制控件的行为和 Web 部件功能,创建继承自 WebPart 类的自定义控件通常是最佳做法。

WebPart 抽象类继承自 Part 基控件,并为所有 WebPart 控件提供基本元素。该类包括一组影响用户界面外观的常用属性。AllowCloseAllowConnectAllowEditAllowHideAllowMinimizeAllowZoneChange 属性分别指定是否允许 Web 应用程序的用户以给定属性名所指示的方式与部件控件交互。CatalogIconImageUrlChromeStateChromeTypeDescriptionHeightHelpUrlHiddenTitleTitleIconImageUrlTitleUrlWidth 属性确定 WebPart 控件的大小、可见性、外观和支持内容(如标题和说明)。

WebPart 控件与其在 Web 部件控件集内的上下文之间的关系由 WebPartManager(该属性包含对该控件的关联 WebPartManager 对象的引用)和 Zone(该属性引用包含该控件的 WebZone)等属性确定。每页只能有一个 WebPartManager 控件,并且 WebPart 控件的每个实例在同一时刻只能驻留在一个 WebZone 中。

Note注意

WebPart 控件可置于网页中 Web 部件区域的外部,但在这种情况下,该控件的作用将与普通服务器控件一样,几乎丧失 Web 部件的所有功能。

其他几个重要属性也会影响 WebPart 控件的独有功能。AuthorizationFilter 属性允许开发人员设置任意字符串,在运行时可使用该字符串作为筛选器来确定是否向页中添加了控件。AuthorizationFilter 属性与某一功能(如角色管理)结合使用,可提供用于根据已定义用户角色创建视图的有用机制。ExportMode 属性指示在导出过程中是导出控件上所有可用的属性数据还是只导出非敏感数据。这样开发人员便可以出于安全目的区分敏感数据和非敏感数据。WebBrowsableObject 属性可返回对 WebPart 控件的一个实例的引用,以使 EditorPart 控件可在页面处于编辑模式时对该实例进行编辑。最后,还有几个属性用来指示控件相对于页面其余部分的状态。IsClosed 属性指示控件已关闭(因此,可将其添加到 PageCatalogPart 对象中),还是已打开并可在页中使用。IsShared 属性指示控件是否是共享控件(与用户特定的控件相对),是共享控件意味着网页的所有用户都可以看到该控件。IsStandalone 属性指示控件当前是否包含在从 WebPartZoneBase 派生的区域中(例如 WebPartZone)。值 false 指示控件处于区域内,因此具有完全的 Web 部件功能。IsStatic 属性指示控件是静态的还是动态的。静态控件在网页的标记中声明,而动态控件是以编程方式添加的。

WebPart 类还提供了几种用于确定在控件生命周期的各个点所发生事情的方法。例如,OnConnectModeChangedOnEditModeChanged 方法都可以在派生类中重写,以便在与每个方法名对应的事件的进行过程中通过编程方式控制控件内容的呈现。

WebPart 派生的类可以向 Verbs 集合中添加 WebPartVerb 对象。谓词在 WebPart 控件标题栏的谓词菜单中呈现。WebPartVerb 对象提供了用于常用用户操作(如隐藏或最小化控件或显示帮助)的简单用户界面元素。

CreateEditorParts 方法创建与 WebPart 控件关联的任意自定义 EditorPart 控件的集合。开发人员可以重写此方法,以创建专门用于编辑他们的 WebPart 控件的自定义控件。当用户单击 WebPart 控件上的编辑谓词时,将调用该方法。

TopicLocation
如何:声明两个 Web 部件控件之间的静态连接生成 ASP .NET Web 应用程序
如何:声明两个 Web 部件控件之间的静态连接在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:将用户控件作为 Web 部件控件使用生成 ASP .NET Web 应用程序
如何:将用户控件作为 Web 部件控件使用在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:生成和运行数据绑定 Web 部件控件示例生成 ASP .NET Web 应用程序
如何:生成和运行数据绑定 Web 部件控件示例在 Visual Studio 中生成 ASP .NET Web 应用程序

下面的代码示例演示如何创建 WebPart 控件并在网页中引用该控件。

示例的第一部分包含名为 TextDisplayWebPart 的自定义 WebPart 控件的代码。此控件演示如何创建简单的自定义 WebPart 控件,使您能够使用 Web 部件控件集的功能。必须编译此源代码,代码示例才能运行。可以显式编译源代码,并将结果程序集放在网站的 Bin 文件夹或全局程序集缓存中。另外,也可将源代码放入站点的 App_Code 文件夹中,源代码将在运行时在此文件夹中进行动态编译。此代码示例假定您将源代码编译为一个程序集,将它放置在您的 Web 应用程序的 Bin 子文件夹中,然后使用网页中的 Register 指令引用该程序集。有关演示这两种编译方法的演练,请参见演练:开发和使用自定义服务器控件

Visual Basic
Imports System
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
C#
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 (input.Text != String.Empty)
      {
        _contentText = input.Text + @"<br />";
        input.Text = String.Empty;
        DisplayContent.Text = this.ContentText;
      }
    }
  }
}
J#
package Samples.AspNet.JSL.Controls;

import System.*;
import System.Security.Permissions.*;
import System.Web.*;
import System.Web.UI.WebControls.*;
import System.Web.UI.WebControls.WebParts.*;

/** @attribute AspNetHostingPermission(SecurityAction.Demand, Level =
    AspNetHostingPermissionLevel.Minimal)
 */
/** @attribute AspNetHostingPermission(SecurityAction.InheritanceDemand, Level =
    AspNetHostingPermissionLevel.Minimal)
 */
public class TextDisplayWebPart extends WebPart
{
    private String _contentText = null;
    private TextBox input;
    private Label displayContent;

    public TextDisplayWebPart()
    {
        this.set_AllowClose(false);
    } //TextDisplayWebPart

    /** @attribute Personalizable()
        @attribute WebBrowsable()
     */
    /** @property 
     */
    public String get_ContentText()
    {
        return _contentText;
    } //get_ContentText

    /** @property 
     */
    public void set_ContentText(String value)
    {
        _contentText = value;
    } //set_ContentText

    protected void CreateChildControls()
    {
        get_Controls().Clear();
        displayContent = new Label();
        displayContent.set_BackColor(System.Drawing.Color.get_LightBlue());
        displayContent.set_Text(this.get_ContentText());
        this.get_Controls().Add(displayContent);
        input = new TextBox();
        this.get_Controls().Add(input);
        Button update = new Button();
        update.set_Text("Set Label Content");
        update.add_Click(new EventHandler(this.Submit_Click));
        this.get_Controls().Add(update);
        set_ChildControlsCreated(true);
    } //CreateChildControls

    private void Submit_Click(Object sender, EventArgs e)
    {
        // Update the label string.
        if (!(input.get_Text().Equals(""))) {
            _contentText = input.get_Text() + "<br />";
            input.set_Text("");
            displayContent.set_Text(this.get_ContentText());
        }
    } //Submit_Click
} //TextDisplayWebPart

示例的第二部分演示如何在 ASP.NET 网页中引用 TextDisplayWebPart 控件。注意,许多不同的 WebPart 属性都可以通过声明方式分配给自定义控件。

Visual Basic
<%@ page language="VB" %>
<%@ register tagprefix="aspSample" 
             Namespace="Samples.AspNet.VB.Controls" 
             Assembly="TextDisplayWebPartVB"%>

<html>
<head id="Head1" runat="server">
  
</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>
C#
<%@ page language="C#" %>
<%@ register tagprefix="aspSample" 
             Namespace="Samples.AspNet.CS.Controls" 
             Assembly="TextDisplayWebPartCS"%>

<html>
<head id="Head1" runat="server">
  
</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>
J#
<%@ page language="VJ#" %>
<%@ register tagprefix="aspSample" 
             Namespace="Samples.AspNet.JSL.Controls" 
             Assembly="TextDisplayWebPartJSL"%>

<html>
<head id="Head1" runat="server">
  
</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>
System.Object
   System.Web.UI.Control
     System.Web.UI.WebControls.WebControl
       System.Web.UI.WebControls.Panel
         System.Web.UI.WebControls.WebParts.Part
          System.Web.UI.WebControls.WebParts.WebPart
             System.Web.UI.WebControls.WebParts.GenericWebPart
             System.Web.UI.WebControls.WebParts.ProxyWebPart
此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利 | 商标 | 隐私权声明
Page view tracker