WebPartVerb クラス
アセンブリ: System.Web (system.web.dll 内)


Web パーツ動詞は対話形式の UI 要素であり、通常、Web パーツ コントロールを使用するページに表示されるボタンまたはハイパーリンクとして表現されます。ユーザーは動詞をクリックして、WebPart コントロールの終了、編集表示モード (EditorZone コントロールに関連付けられた特殊なページ ビュー) の終了など、Web パーツ コントロールの一般的な UI 操作を実行します。Web パーツ コントロール セットに用意されているすべての標準動詞が、Web パーツ ゾーン (WebPartZone、EditorZone、CatalogZone、または ConnectionsZone) または Web パーツの Part コントロール (WebPart、GenericWebPart、EditorPart、または CatalogPart) のいずれかに関連付けられています。
標準動詞がゾーンに関連付けられている場合、そのアクションはゾーン レベルで適用され、通常、ゾーンのヘッダー領域またはフッター領域に動詞が表示されます。一般的なゾーン レベルの動詞およびそのアクションの説明を次の表に示します。
ToolZone クラスから継承したゾーンで使用します。ゾーンの UI を非表示にし、多くの場合、ページを通常のブラウズ モード表示に戻します。 | |
EditorZoneBase クラスから継承したゾーンで使用します。Apply 動詞と Close 動詞を組み合わせた効果を持っています。変更を適用してゾーンの UI を非表示にします。 | |
ToolZone クラスから継承したゾーンで使用します。ユーザーが実行し、保留になっているすべての変更をキャンセルします。 | |
CatalogZoneBase クラスから継承したゾーンで使用します。ユーザーがコントロールのカタログから選択したコントロールを、指定された WebPartZone ゾーンに追加します。 | |
ConnectionsZone クラスから継承したゾーンで使用します。ビューを開き、ユーザーが既存の接続を設定できるようにします。 | |
Part コントロールに関連付けられた標準動詞は、アクションがそのコントロール自体 (またはその子コントロール) に適用されます。パーツ コントロールは動詞のコンテナとして動作し、動詞の表示を管理します。パーツ コントロールに関連付けられる大部分の標準動詞は、タイトル バーに直接表示されるかタイトル バー内のドロップダウンの動詞メニューに表示されます。これらの動詞をヘッダーに直接表示するのか、または動詞メニューに表示するのかは、WebPartVerbRenderMode プロパティで決定されます。既定では、動詞は動詞メニューに表示されます。さまざまな Part コントロールに関連付けられた一般的な動詞およびそのアクションの説明を次の表に示します。
Web パーツ コントロール セットに用意されている標準動詞の他に、カスタム動詞を作成することもできます。通常、カスタム動詞は Part コントロールと関連付けて作成します。これらの動詞を作成すると、標準動詞と共に既定で動詞メニューに表示されます。このような動詞を作成する基本的な方法では、まず WebPartVerb クラスから継承する 1 つ以上のカスタム動詞を作成します。次に、WebPart 基本クラスから継承するコントロールを作成し、カスタム WebPartVerb オブジェクトを WebPartVerbCollection コレクションに追加します。このコレクションをコントロールの Verbs コレクションに追加すると、実行時にコントロールの動詞メニューにカスタム動詞が自動的に表示されます。標準動詞と同様に、WebPart コントロールのカスタム動詞にはプログラムでアクセスできます。
Web パーツ アプリケーションは、カスタム コントロール、ユーザー コントロール、ASP.NET コントロールなど、WebPart クラスから継承しないサーバー コントロールを使用できます。これらのサーバー コントロールを WebPartZoneBase ゾーンに追加すると、実行時に GenericWebPart オブジェクトで動的にラップされます。これにより、これらのコントロールがランタイム WebPart コントロールとして機能できます。WebPart クラスから継承しないサーバー コントロールにカスタム動詞を追加するには、サーバー コントロールに IWebActionable インターフェイスを実装し、その Verbs プロパティをオーバーライドする必要があります。
1 つの動詞を作成すると、ユーザーが動詞をクリックした場合に実行される、サーバー側イベント ハンドラ (サーバー上で実行されるコード) およびクライアント側イベント ハンドラ (クライアントのブラウザで実行されるコード) という 2 種類の関連するイベント ハンドラを作成できます。また、動詞のカスタム状態を定義できます。これは、ユーザーに視覚上の手掛かりを提供するのに役立ちます。たとえば、ある動詞が選択されていることを示す状態を作成し、次に UI を適切に変更してその動詞が既に選択されていることをユーザーに知らせることができます。その他の役に立つ動作には動詞を無効にする機能があります。これにより、アプリケーションの状態に応じてクリックすると問題が発生したり、クリックしても効果がない場合に、ユーザーがその動詞をクリックするのを防止できます。
WebPartVerb クラスは固有のメソッドを公開しません。公開されるメソッドはすべて基本メソッドのオーバーライドです。ただし、それには開発者の役に立つ多くのプロパティが含まれています。Checked プロパティは、動詞が現在選択されているかどうかを示します。ClientClickHandler プロパティおよび ServerClickHandler プロパティは、クライアントとサーバーのクリック イベント用の、クラス内のそれぞれのハンドラ (存在する場合) を表します。Description プロパティには、ユーザーが UI の動詞の上にマウス ポンタを置くとツールヒントで動詞の目的を説明するためのテキストが格納されています。Enabled プロパティは動詞の現在の状態を示し、これによりユーザーがその動詞をクリックしてアクションを実行できるかどうかを判断します。ID プロパティは、動詞オブジェクトに一意の ID を提供します。ImageUrl プロパティは、イメージの URL を格納します。これは、既定の表示 (通常はボタンまたはハイパーリンク) の代わりとして UI に動詞を表現するのに使用できます。Text プロパティは、UI の動詞の上に直接表示するラベル テキストを格納します。オーバーライドされた Visible プロパティは、現在 UI に動詞が表示されているかどうかを判断します。動詞は、Web パーツ アプリケーションのさまざまな時点で非表示にしたり無効にしたりします。たとえば、専門動詞 (Edit 動詞、Connect 動詞など) は、ページ上に該当するコントロール、設定、および表示モードが存在して、これらの動詞が意味のあるアクションを実行できる場合にのみ表示されます。
動詞で使用される他の重要なメンバには、動詞作成プロセスのカスタム ハンドリングを行うためにオーバーライドできるイベント ハンドラである WebPartZoneBase.OnCreateVerbs メソッド、および WebPartZoneBase.CreateVerbs イベントがあります。

カスタム WebPartVerb オブジェクトを作成する方法、および OnCreateVerbs メソッドを使用してゾーン内にある各 WebPart コントロールの動詞メニューに動詞を追加するカスタム ゾーンを作成する方法のコード例を次に示します。このコード例は 4 つの部分で構成されます。
-
カスタム WebPartVerb オブジェクト、および OnCreateVerbs メソッドをオーバーライドしてゾーン内の WebPart コントロールにカスタム動詞を追加する簡単なカスタム WebPartZoneBase ゾーンが含まれたソース ファイル。
コード例の最初の部分には、いくつかのテキストを表示する簡単な WebPart コントロールを作成するソース コードが含まれています。コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。このコード例は、動的コンパイルのアプローチを使用します。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。
Imports System 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
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); } } }
コード例の 2 番目の部分には、カスタム ゾーンとカスタム WebPartVerb オブジェクトを作成するソース コードが含まれています。このゾーンは OnCreateVerbs メソッドをオーバーライドして、ゾーン内の任意の WebPart コントロールにカスタム動詞を追加します。既定では、動詞はコントロールの動詞メニューに追加されます。カスタム動詞のコードでは、動詞のコンストラクタはサーバーのクリック ハンドラを使用します。さらに、呼び出されたメソッドは WebPart クラスから直接継承するコントロールの完全なコピーを作成して、新しく作成したコピーを同じゾーンに追加します。コード例の最初の部分と同じように、このソース コードをコンパイルする必要があります。また、この例では、動的にコンパイルするために、ソース ファイルが App_Code サブフォルダに配置されています。
Imports System 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 'OnCreateVerbs 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 'New 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
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 { ; } } } }
コード例の 3 番目の部分は、コントロールをホストする Web ページです。ページの先頭近くに、カスタム コントロールの名前空間を宣言する Register ディレクティブがあります。この例では動的コンパイルを使用するため、アセンブリは宣言されていません。カスタム WebPart コントロールは、カスタム ゾーン内に宣言されています。また、このゾーン内に他の WebPart コントロールを宣言し、カスタム動詞をその動詞メニューに追加することもできます。
<%@ 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 > <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="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 > <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 コントロールの動詞メニューをクリックします。[Copy Web Part] 動詞が表示されます。この動詞をクリックし、コントロールのコピーがゾーンに追加されることを確認します。


System.Web.UI.WebControls.WebParts.WebPartVerb


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- WebPartVerb クラスのページへのリンク