共用方式為


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元素,通常是由按鈕或超連結表示,這些元素會出現在使用網頁元件控件的頁面中。 用戶單擊動詞來執行 Web 元件控制件的一般 UI 動作,例如關閉 WebPart 控件或關閉編輯顯示模式, (與控件相關聯的 EditorZone 特殊頁面檢視) 。 提供給網頁元件控制項集的所有標準動詞都會與網頁元件區域 (、、 或) 或網頁元件Part控制項WebPartGenericWebPart (、 或 EditorPartCatalogPart) 相關聯。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 會指出目前是否選取動詞。 ClientClickHandlerServerClickHandler 屬性會參考 類別內的個別處理程式,如果客戶端和伺服器按兩下事件有任何存在) ,則 (。 屬性 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() 方法。

適用於

另請參閱