WebPartVerb 類別

定義

提供互動式使用者介面 (UI) 項目,讓使用者在 Web 組件頁面上執行動作。

public ref class WebPartVerb : System::Web::UI::IStateManager
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmptyStringExpandableObjectConverter))]
public class WebPartVerb : System.Web.UI.IStateManager
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmptyStringExpandableObjectConverter))>]
type WebPartVerb = class
    interface IStateManager
Public Class WebPartVerb
Implements IStateManager
繼承
WebPartVerb
屬性
實作

範例

下列程式碼範例示範如何建立自訂 WebPartVerb 物件,以及使用 OnCreateVerbs 方法將動詞新增至區域中每個 WebPart 控制項的動詞功能表的自訂區域。 程式碼範例有四個部分:

  • 原始程式檔,其中包含顯示某些文字的簡單自訂 WebPart 控制項。

  • 包含自訂 WebPartVerb 物件的原始程式檔,以及覆寫 OnCreateVerbs 方法的簡單自訂 WebPartZoneBase 區域,以將自訂動詞新增至 WebPart 區域中的控制項。

  • 包含自訂區域和自訂 WebPart 控制項的網頁。

  • 範例運作方式的說明。

程式碼範例的第一個部分包含原始程式碼,可建立顯示某些文字的簡單 WebPart 控制項。 若要執行程式碼範例,您必須編譯此原始程式碼。 您可以明確地編譯它,並將產生的元件放在網站的 Bin 資料夾或全域組件快取中。 或者,您可以將原始程式碼放在月臺的 App_Code 資料夾中,其將在執行時間動態編譯。 此程式碼範例會使用動態編譯方法。 如需示範如何編譯的逐步解說,請參閱逐步解說 :開發和使用自訂 Web 服務器控制項

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{

    // This code snippet creates a simple Web Part control.
    [AspNetHostingPermission(SecurityAction.Demand,
      Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand,
      Level = AspNetHostingPermissionLevel.Minimal)]
    public class SimpleControl : WebPart
    {

        private String _text = "Simple control text";

        public string Text
        {
            get
            {
                if (_text != null)
                    return _text;
                else
                    return string.Empty;
            }
            set { _text = value; }
        }

        protected override void Render(System.Web.UI.HtmlTextWriter 
      writer)
        {
            writer.Write(this.Text);
        }
    }
}
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Collections.Generic
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls

' This code snippet creates a simple Web Part control.
Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class SimpleControl
    Inherits System.Web.UI.WebControls.WebParts.WebPart

    Private _text As String = "Simple control text"

    Public Property [Text]() As String
      Get
        If Not (_text Is Nothing) Then
          Return _text
        Else
          Return String.Empty
        End If
      End Get
      Set(ByVal value As String)
        _text = value
      End Set
    End Property

    Protected Overrides Sub Render(ByVal writer _
      As System.Web.UI.HtmlTextWriter)

      writer.Write(Me.Text)

    End Sub

  End Class

End Namespace

範例的第二個部分包含建立自訂區域和自訂 WebPartVerb 物件的原始程式碼。 請注意,區域會 OnCreateVerbs 覆寫 方法,將自訂動詞新增至區域中的任何 WebPart 控制項。 動詞預設會新增至控制項的動詞功能表。 請注意,在自訂動詞命令的程式碼中,動詞的建構函式會使用伺服器按一下處理常式,而呼叫的 方法會建立直接繼承自 WebPart 類別之任何控制項的完整複本,並將新建立的複本新增至相同的區域。 如同程式碼範例的第一個部分,必須編譯此原始程式碼,在此範例中,原始程式檔會放在要動態編譯的App_Code子資料夾中。

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
/* 
This code sample creates a Web Part zone and adds the 
"Copy Web Part" verb to any control in the zone.
*/
[AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
public class ZoneWithAddedVerb : WebPartZone
{

  protected override void OnCreateVerbs(WebPartVerbsEventArgs e)
  {
    List<WebPartVerb> newVerbs = new List<WebPartVerb>();
    newVerbs.Add(new CopyWebPartVerb(CopyWebPartToNewOne));
    e.Verbs = new WebPartVerbCollection(e.Verbs,newVerbs);
    base.OnCreateVerbs(e);
  }

  void CopyWebPartToNewOne(object sender, WebPartEventArgs e)
  {
    WebPartManager wpmgr = 
      WebPartManager.GetCurrentWebPartManager(Page);
    System.Web.UI.WebControls.WebParts.WebPart wp;
    Type tp = e.WebPart.GetType(); 
    wp = (System.Web.UI.WebControls.WebParts.WebPart)Activator.CreateInstance(tp);   
    wpmgr.AddWebPart(wp, e.WebPart.Zone, e.WebPart.ZoneIndex + 1);
  }
}
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  internal class CopyWebPartVerb : WebPartVerb
  {
    private const String _copyWebPartImageUrl = "~/CopyVerb.ico";

    internal CopyWebPartVerb(WebPartEventHandler serverClickHandler) :  
       base("MyVerb", serverClickHandler)
    { }
    public override string Text
    {
      get { return "Copy Web Part"; }
      set { ;}
    }
    public override string Description
    {
      get { return "This verb will copy this web part control " +
        "to a new one below"; }
      set { ; }
    }
    public override bool Enabled
    {
      get { return base.Enabled; }
      set { base.Enabled = value; }
    }
    
    public override string ImageUrl
    {
      get { return _copyWebPartImageUrl; }
      set { ; }
    }
  }
}
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Collections.Generic
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls

' This code sample creates a Web Part zone and adds the 
' "Copy Web Part" verb to any control in the zone.
Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class ZoneWithAddedVerb
    Inherits WebPartZone

    'public class ExtendedWebPartZoneBase 
    Protected Overrides Sub OnCreateVerbs(ByVal e _
      As WebPartVerbsEventArgs)

      Dim newVerbs As List(Of WebPartVerb) = _
        New List(Of WebPartVerb)
      newVerbs.Add(New CopyWebPartVerb(AddressOf CopyWebPartToNewOne))
      e.Verbs = New WebPartVerbCollection(e.Verbs, newVerbs)
      MyBase.OnCreateVerbs(e)

    End Sub


    Sub CopyWebPartToNewOne(ByVal sender As Object, _
      ByVal e As WebPartEventArgs)

      Dim wpmgr As WebPartManager = _
        WebPartManager.GetCurrentWebPartManager(Page)
      Dim wp As System.Web.UI.WebControls.WebParts.WebPart
      Dim tp As Type = e.WebPart.GetType()
      wp = CType(Activator.CreateInstance(tp), _
        System.Web.UI.WebControls.WebParts.WebPart)
      wpmgr.AddWebPart(wp, e.WebPart.Zone, e.WebPart.ZoneIndex + 1)

    End Sub

  End Class


  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Friend Class CopyWebPartVerb
    Inherits WebPartVerb
    Private Const _copyWebPartImageUrl As String = "~/CopyVerb.ico"

    Friend Sub New(ByVal serverClickHandler As WebPartEventHandler)
      MyBase.New("MyVerb", serverClickHandler)

    End Sub

    Public Overrides Property [Text]() As String
      Get
        Return "Copy Web Part"
      End Get
      Set(ByVal value As String)
      End Set
    End Property

    Public Overrides Property Description() As String
      Get
        Return "This verb will copy this web part control to a " _
               & "new one below"
      End Get
      Set(ByVal value As String)
      End Set
    End Property

    Public Overrides Property Enabled() As Boolean
      Get
        Return MyBase.Enabled
      End Get
      Set(ByVal value As Boolean)
        MyBase.Enabled = value
      End Set
    End Property
    
    Public Overrides Property ImageUrl() As String
      Get
        Return Me._copyWebPartImageUrl
      End Get
      Set(ByVal value As String)
      End Set
    End Property

  End Class

End Namespace

程式碼範例的第三個部分是裝載控制項的網頁。 請注意,頁面頂端有指示 Register 詞可宣告自訂控制項的命名空間。 因為這個範例使用動態編譯,所以不會宣告任何元件。 自訂 WebPart 控制項會在自訂區域內宣告。 您也可以在此區域中宣告其他 WebPart 控制項,而且自訂動詞也會新增至其動詞功能表。

<%@ Page Language="C#" %>
<%@ Register TagPrefix="verbsample" 
    namespace="Samples.AspNet.CS.Controls" %>

<!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 runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat="server" />
    <verbsample:ZoneWithAddedVerb id="ZoneWithAddedVerb1" 
      HeaderText="Zone with Added Verb" runat="server">
        <ZoneTemplate>
           <verbsample:SimpleControl id="SimpleControl1" 
            title="Simple Control" runat="server" /> 
        </ZoneTemplate>
        </verbsample:ZoneWithAddedVerb>
     </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Register TagPrefix="verbsample" 
    namespace="Samples.AspNet.VB.Controls" %>

<!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 runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat="server" />
    <verbsample:ZoneWithAddedVerb id="ZoneWithAddedVerb1" 
      HeaderText="Zone with Added Verb" runat="server">
        <ZoneTemplate>
           <verbsample:SimpleControl id="SimpleControl1" 
            title="Simple Control" runat="server" /> 
        </ZoneTemplate>
        </verbsample:ZoneWithAddedVerb>
     </form>
</body>
</html>

在瀏覽器中載入頁面,然後按一下自訂 WebPart 控制項上的動詞功能表。 [複製網頁元件] 動詞應該會顯示。 按一下動詞,並注意控制項的複本會新增至區域。

備註

網頁元件動詞是互動式 UI 元素,通常是由按鈕或超連結表示,這些元素會出現在使用網頁元件控制項的頁面中。 使用者按一下動詞來執行網頁元件控制項的一般 UI 動作,例如關閉 WebPart 控制項或關閉編輯顯示模式, (與 EditorZone 控制項相關聯的特殊頁面檢視) 。 Web 元件控制項集提供的所有標準動詞都會與網頁元件區域 (、、 或) 或網頁 Part 元件控制項 WebPart (、 EditorPartGenericWebPart 、 或 CatalogPart) 相關聯。 ConnectionsZoneCatalogZoneEditorZoneWebPartZone

當標準動詞與區域相關聯時,其動作會在區域層級套用,而動詞命令通常會出現在區域的頁首或頁尾區域中。 下表列出常見的區域層級動詞,並描述其動作。

區域層級動詞 動作
關閉動詞 與繼承自 類別的區域 ToolZone 搭配使用。 隱藏區域的 UI,通常會將頁面傳回至其一般瀏覽模式檢視。
套用動詞 與繼承自 類別的區域 EditorZoneBase 搭配使用。 套用使用者所做的變更。
確定動詞 與繼承自 類別的區域 EditorZoneBase 搭配使用。 具有套用和關閉動詞的合併效果;它會套用變更,並隱藏區域的 UI。
取消動詞 與繼承自 類別的區域 ToolZone 搭配使用。 取消使用者所做的任何擱置變更。
新增動詞 與繼承自 類別的區域 CatalogZoneBase 搭配使用。 將使用者從控制項目錄選取的控制項新增至指定的 WebPartZone 區域。
設定動詞 與繼承自 類別的區域 ConnectionsZone 搭配使用。 開啟檢視,讓使用者能夠設定現有的連線。
中斷連接動詞 與繼承自 類別的區域 ConnectionsZone 搭配使用。 終止兩個控制項之間的現有連接。

如同與控制項相關聯的 Part 標準動詞,其動作會套用至控制項本身 (或其子控制項) 。 元件控制項可作為動詞命令的容器,並管理動詞的轉譯。 與元件控制項相關聯的大部分標準動詞會直接出現在標題列或標題列中的下拉式動詞功能表。 不論這些動詞是否直接出現在標頭或動詞功能表中是由 WebPartVerbRenderMode 屬性決定;根據預設,動詞命令會出現在動詞功能表中。 下表列出與各種 Part 控制項相關聯的常見動詞,並描述其動作。

元件控制項動詞 動作
最小化動詞 出現在區域中每個 WebPartZoneBase 伺服器控制項的動詞功能表。 將控制項縮減為最小的標記法,並隱藏除了還原動詞以外的 UI 中的所有專案。
還原動詞 出現在區域中每個 WebPartZoneBase 伺服器控制項的動詞功能表。 將最小化控制項傳回其一般大小和檢視。
關閉動詞 出現在區域中每個 WebPartZoneBase 伺服器控制項的動詞功能表。 關閉控制項並將它新增至頁面目錄,這表示控制項已從頁面移除,但如果有設計正確的目錄,使用者可以重新開啟關閉的控制項,並將它傳回頁面。
連接動詞 如果頁面處於連接顯示模式,以及控制項可以形成連接,則會出現在區域所包含的 WebPartZoneBase 控制項動詞功能表中。 開啟連線 UI,讓使用者可以在控制項之間建立連線。
刪除動詞 如果控制項是以程式設計方式 (新增至頁面,而不是以持續性格式宣告) ,則會出現在區域中控制項的 WebPartZoneBase 動詞功能表。 永久刪除控制項實例和任何相關聯的個人化資料,因此,與關閉的控制項不同,已刪除的實例永遠無法還原至頁面。
編輯動詞 如果頁面設計為允許編輯控制項,而且頁面處於編輯顯示模式,則會出現在區域所包含的 WebPartZoneBase 控制項動詞功能表中。 選取要編輯的控制項,並開啟編輯 UI。
匯出動詞 如果控制項和應用程式已啟用匯出,則會出現在區域中控制項 WebPartZoneBase 的動詞功能表。 開啟對話方塊,讓使用者匯出包含控制項序列化狀態的描述檔。 如需詳細資訊,請參閱 ExportMode 屬性。
說明動詞 如果控制項的設計目的是要提供說明檔,則會出現在區域中控制項 WebPartZoneBase 的動詞功能表。 啟動提供控制項說明的頁面。

除了 Web 元件控制項集所提供的標準動詞,您也可以建立自訂動詞。 建立自訂動詞命令的常見案例是建立與控制項相關聯的 Part 動詞。 當您建立這些動詞時,它們預設會出現在動詞功能表以及標準動詞。 建立這類動詞的基本方法是繼承自 類別, WebPartVerb 以建立一或多個自訂動詞。 然後建立繼承自基類的控制項, WebPart 並將自訂 WebPartVerb 物件新增至 WebPartVerbCollection 集合。 此集合接著可以新增至 Verbs 控制項的集合,這會導致自訂動詞命令在執行時間自動出現在控制項的動詞功能表。 如同標準動詞,您可以在 控制項上 WebPart 以程式設計方式存取自訂動詞。

Web 元件應用程式可以使用不繼承自 WebPart 類別的伺服器控制項,例如自訂控制項、使用者控制項或 ASP.NET 控制項。 如果新增至 WebPartZoneBase 區域,這些伺服器控制項會在執行時間以 GenericWebPart 物件動態包裝,這可讓它們當做執行時間 WebPart 控制項運作。 若要將自訂動詞新增至未繼承自 WebPart 類別的伺服器控制項,伺服器控制項必須實 IWebActionable 作 介面並覆寫其 Verbs 屬性。

當您建立動詞時,可以建立兩種類型的相關聯事件處理常式,當使用者按一下動詞時會執行:伺服器端事件處理常式 (在伺服器) 上執行的程式碼,以及用戶端事件處理常式 (在用戶端瀏覽器中執行的程式碼) 。 此外,您可以定義動詞命令的自訂狀態,這是為使用者提供視覺提示的實用方式。 例如,您可以建立狀態,指出已選取動詞,然後在 UI 中提供適當的變更,以通知使用者已選取動詞。 另一個有用的行為是停用動詞功能;如此一來,您可以防止使用者按一下動詞,如果這樣做會根據應用程式的狀態有害或無效。

類別 WebPartVerb 不會公開任何唯一的方法;其公開的方法都是基底方法的覆寫。 不過,它包含數個屬性,可供開發人員注意。 屬性 Checked 會指出目前是否已選取動詞。 ClientClickHandler如果用戶端和伺服器按一下事件有任何存在) ,則 和 ServerClickHandler 屬性會參考 類別內的個別處理常式 (。 屬性 Description 包含文字,描述當使用者將滑鼠指標放在 UI 中動詞命令上方時,工具提示中的動詞用途。 屬性 Enabled 會指出動詞的目前狀態,決定使用者是否可以按一下動詞命令並執行其動作。 屬性 ID 會提供動詞物件的唯一識別碼。 ImageUrl屬性包含影像的 URL,可用來代表 UI 中的動詞命令,取代預設轉譯 (通常是按鈕或超連結) 。 屬性 Text 包含直接出現在 UI 動詞命令上的標籤文字。 覆寫 Visible 的屬性會判斷動詞目前是否顯示在 UI 中。 動詞命令通常會在 Web 元件應用程式中的不同時間隱藏或停用;例如,只有在頁面上有適當的控制項、設定和顯示模式時,才會顯示特殊動詞 (,例如編輯動詞和連接動詞) ,以便讓這些動詞採取有意義的動作。

使用動詞的其他重要成員包括 WebPartZoneBase.OnCreateVerbs 方法,這是可以覆寫的事件處理常式,用於自訂動詞建立程式的處理,以及 WebPartZoneBase.CreateVerbs 事件。

建構函式

WebPartVerb(String, String)

初始化 WebPartVerb 類別的新執行個體,並使用戶端按一下事件處理常式與此執行個體產生關聯。

WebPartVerb(String, WebPartEventHandler)

初始化 WebPartVerb 類別的新執行個體,並使伺服器端按一下事件處理常式與此執行個體產生關聯。

WebPartVerb(String, WebPartEventHandler, String)

初始化 WebPartVerb 類別的新執行個體,並使用戶端和伺服器端按一下事件處理常式與此執行個體產生關聯。

屬性

Checked

取得或設定值,表示與自訂動詞命令關聯的特定狀態目前正在作用中或已選取。

ClientClickHandler

取得字串,包含 WebPartVerb 建構函式中所定義之用戶端事件處理常式的方法名稱。

Description

取得或設定動詞命令的簡短描述。

Enabled

取得或設定值,指出指定的動詞命令是否已啟用。

ID

取得包含動詞命令唯一 ID 的字串。

ImageUrl

取得或設定字串,包含在使用者介面 (UI) 中表示動詞命令之影像的 URL。

IsTrackingViewState

取得值,指出目前是否正在追蹤動詞命令的檢視狀態。

ServerClickHandler

取得方法的參考,這個方法會處理動詞命令的伺服器端按一下事件。

Text

取得或設定使用者介面 (UI) 所顯示指定之動詞命令的文字標籤。

ViewState

取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。

Visible

取得或設定值,指出動詞命令對使用者是否可見。

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
LoadViewState(Object)

SaveViewState() 方法所儲存的先前頁面要求來還原檢視狀態資訊。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
SaveViewState()

儲存自從網頁上次回傳至伺服器以來所發生的 WebPartVerb 物件檢視狀態變更。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
TrackViewState()

追蹤動詞命令的檢視狀態變更,讓變更能夠儲存在動詞命令的 StateBag 物件中。

明確介面實作

IStateManager.IsTrackingViewState

藉由呼叫 IsTrackingViewState 類別自己的 WebPartVerb 屬性,實作 IsTrackingViewState 屬性。

IStateManager.LoadViewState(Object)

藉由呼叫 LoadViewState(Object) 類別自己的 IStateManager 方法,實作 WebPartVerb 介面的 LoadViewState(Object) 方法。

IStateManager.SaveViewState()

藉由呼叫 SaveViewState() 類別自己的 WebPartVerb 方法,實作 SaveViewState() 方法。

IStateManager.TrackViewState()

藉由呼叫 TrackViewState() 類別自己的 WebPartVerb 方法,實作 TrackViewState() 方法。

適用於

另請參閱