IWebActionable インターフェイス
アセンブリ: System.Web (system.web.dll 内)


Web パーツ コントロール セットの動詞とは、ユーザーがユーザー インターフェイス (UI) で実行できるアクションです。通常、動詞は、UI で、ボタン、リンク、またはメニュー項目などのクリック可能コントロールによって表されます。Web パーツ コントロール セットには、WebPart コントロール、および WebPartZoneBase ゾーン内に配置されたときに WebPart コントロールのように動作することができる他のサーバー コントロール (カスタム コントロール、ASP.NET コントロール、ユーザー コントロールなど) が既定で使用できる標準の動詞が用意されています。標準の動詞には、close、minimize、restore、delete、edit、export などがあります。
また、WebPart コントロールやサーバー コントロールで使用するカスタム動詞を作成することもできます。開発者がカスタム動詞をコントロールに統合できるように、Verbs プロパティを持つ IWebActionable インターフェイスがあります。WebPart クラスは、IWebActionable インターフェイスを実装し、そのインターフェイスの唯一のプロパティをオーバーライドします。WebPart クラスから継承されるコントロールにカスタムの動詞を追加するには、WebPart.Verbs プロパティをオーバーライドし、カスタム動詞をコレクションに追加して、そのコレクションを返す必要があります。WebPart.Verbs プロパティから参照されるコレクションには、カスタム動詞だけが含まれることに注意してください。このコレクションには、標準の動詞は含まれません。このコレクションには既定でカスタム動詞がないため、WebPart コントロールの WebPart.Verbs プロパティの既定の戻り値は、null 参照 (Visual Basic では Nothing) です。
WebPart コントロールではないサーバー コントロールにカスタム動詞を追加するには、もう 1 つ手順が必要です。これらのサーバー コントロールでは、Verbs プロパティをオーバーライドしてカスタム動詞をコレクションに追加するだけでなく、IWebActionable インターフェイスも実装する必要があります。
WebPart またはサーバー コントロール上の Verbs コレクションにカスタム動詞を追加すると、カスタム動詞の作成と表示に必要な他のステップが Web パーツ コントロール セットによって自動的に処理されます。

IWebActionable インターフェイスの簡単な実装を次のコード例に示します。
このコード例の最初の部分は、ユーザー コントロールでインターフェイスを実装する方法を示しています。このユーザー コントロールは、2 つのカスタム動詞を作成し、ユーザーがいずれかの動詞をクリックしたときに実行されるメソッドを定義することによって、Verbs プロパティを実装しています。説明を簡略化するために、同じメソッドを使用しています。このメソッドは、VerbCounterClicks という名前のプロパティの値を更新します。また、Page_Load メソッドのコードは、コントロールの Verbs プロパティにアクセスして、コレクション内のカスタム動詞の合計数を表示します。この数には、標準の Web パーツの動詞は含まれません。
<%@ control language="vb" classname="AccountUserControlVB" %> <%@ implements interface="System.Web.UI.WebControls.WebParts.IWebActionable" %> <%@ Import Namespace="System.ComponentModel" %> <script runat="server"> Private m_Verbs As WebPartVerbCollection <Personalizable()> _ Public Property UserName() As String Get If String.IsNullOrEmpty(Textbox1.Text) OrElse _ Textbox1.Text.Length < 0 Then Return String.Empty Else Return Textbox1.Text End If End Get Set(ByVal value As String) Textbox1.Text = value End Set End Property <Personalizable()> _ Public Property Phone() As String Get If String.IsNullOrEmpty(Textbox2.Text) OrElse _ Textbox2.Text.Length < 0 Then Return String.Empty Else Return Textbox2.Text End If End Get Set(ByVal value As String) Textbox2.Text = value End Set End Property ' The following code handles the verbs. <Personalizable()> _ Public Property VerbCounterClicks() As Integer Get Dim objVerbCounter As Object = _ ViewState("VerbCounterClicks") VerbCounterClicks = 0 If Not (objVerbCounter Is Nothing) Then VerbCounterClicks = CType(objVerbCounter, Int32) End If Return VerbCounterClicks End Get Set(ByVal value As Integer) ViewState("VerbCounterClicks") = value End Set End Property Private Sub IncrementVerbCounterClicks _ (ByVal sender As Object, ByVal e As WebPartEventArgs) VerbCounterClicks += 1 Label4.Text = "Custom Verbs Click Count: " + _ Me.VerbCounterClicks.ToString() End Sub Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Label3.Text = "Custom Verb Count: " + _ WebPartManager.GetCurrentWebPartManager(Page). _ WebParts(0).Verbs.Count.ToString() End Sub ' This property implements the IWebActionable interface. ReadOnly Property Verbs() As WebPartVerbCollection _ Implements IWebActionable.Verbs Get If (m_Verbs Is Nothing) Then Dim verbsList As New ArrayList() Dim onlyVerb As New WebPartVerb _ ("customVerb1", New WebPartEventHandler(AddressOf IncrementVerbCounterClicks)) onlyVerb.Text = "My Verb" onlyVerb.Description = "VerbTooltip" onlyVerb.Visible = True onlyVerb.Enabled = True verbsList.Add(onlyVerb) Dim otherVerb As New WebPartVerb _ ("customVerb2", New WebPartEventHandler(AddressOf IncrementVerbCounterClicks)) otherVerb.Text = "My other Verb" otherVerb.Description = "Other VerbTooltip" otherVerb.Visible = True otherVerb.Enabled = True verbsList.Add(otherVerb) m_Verbs = New WebPartVerbCollection(verbsList) End If Return m_Verbs End Get End Property </script> <div> <asp:label id="Label1" runat="server">Name</asp:label> <asp:textbox id="Textbox1" runat="server" /> </div> <div> <asp:label id="Label2" runat="server">Phone</asp:label> <asp:textbox id="Textbox2" runat="server"></asp:textbox> </div> <div> <asp:button id="Button2" runat="server" text="Save Form Values" /> </div> <hr /> <br /> <asp:Label ID="Label3" runat="server" Text="" /> <br /> <asp:Label ID="Label4" runat="server" Text="" />
<%@ control language="C#" classname="AccountUserControl" %> <%@ implements interface="System.Web.UI.WebControls.WebParts.IWebActionable" %> <%@ Import Namespace="System.ComponentModel" %> <script runat="server"> private WebPartVerbCollection m_Verbs; [Personalizable] public string UserName { get { if (String.IsNullOrEmpty(Textbox1.Text) || Textbox1.Text.Length < 0) return String.Empty; else return Textbox1.Text; } set { Textbox1.Text = value; } } [Personalizable] public string Phone { get { if(String.IsNullOrEmpty(Textbox2.Text) || Textbox2.Text.Length < 0) return String.Empty; else return Textbox2.Text; } set { Textbox2.Text = value; } } // The following code handles the verbs. [Personalizable] public int VerbCounterClicks { get { object objVerbCounter = ViewState["VerbCounterClicks"]; int VerbCounterClicks = 0; if (objVerbCounter != null) VerbCounterClicks = (int)objVerbCounter; return VerbCounterClicks; } set { ViewState["VerbCounterClicks"] = value; } } private void IncrementVerbCounterClicks(object sender, WebPartEventArgs e) { VerbCounterClicks += 1; Label4.Text = "Custom Verbs Click Count: " + this.VerbCounterClicks.ToString(); } void Page_Load(object sender, EventArgs e) { Label3.Text = "Custom Verb Count: " + WebPartManager.GetCurrentWebPartManager(Page). WebParts[0].Verbs.Count.ToString(); } // This property implements the IWebActionable interface. WebPartVerbCollection IWebActionable.Verbs { get { if (m_Verbs == null) { ArrayList verbsList = new ArrayList(); WebPartVerb onlyVerb = new WebPartVerb ("customVerb1", new WebPartEventHandler(IncrementVerbCounterClicks)); onlyVerb.Text = "My Verb"; onlyVerb.Description = "VerbTooltip"; onlyVerb.Visible = true; onlyVerb.Enabled = true; verbsList.Add(onlyVerb); WebPartVerb otherVerb = new WebPartVerb ("customVerb2", new WebPartEventHandler(IncrementVerbCounterClicks)); otherVerb.Text = "My other Verb"; otherVerb.Description = "Other VerbTooltip"; otherVerb.Visible = true; otherVerb.Enabled = true; verbsList.Add(otherVerb); m_Verbs = new WebPartVerbCollection(verbsList); return m_Verbs; } return m_Verbs; } } </script> <div> <asp:label id="Label1" runat="server">Name</asp:label> <asp:textbox id="Textbox1" runat="server" /> </div> <div> <asp:label id="Label2" runat="server">Phone</asp:label> <asp:textbox id="Textbox2" runat="server"></asp:textbox> </div> <div> <asp:button id="Button2" runat="server" text="Save Form Values" /> </div> <hr /> <br /> <asp:Label ID="Label3" runat="server" Text="" /> <br /> <asp:Label ID="Label4" runat="server" Text="" />
コード例の 2 番目の部分は、ユーザー コントロールをホストする .aspx ページです。このコントロールは WebPartZone コントロール内で参照されているため、ASP.NET は、実行時にユーザー コントロールを GenericWebPart コントロール内にラップし、WebPart コントロールとして扱います。ブラウザでこのページを読み込むと、コントロールの下部のラベルに、Verbs プロパティから参照されるコレクションに含まれるカスタム動詞の数が表示されます。また、コントロールの動詞のメニューをクリックしていずれかの動詞をクリックすると、別のラベルが表示され、カスタム動詞がクリックされた合計回数が表示されます。
<%@ page language="vb" %> <%@ register tagprefix="uc1" tagname="AccountUserControlVB" src="usercontrolverbvb.ascx"%> <html> <head runat="server"> <title> Personalizable User Control with IWebPart Properties </title> </head> <body> <form id="form1" runat="server"> <asp:webpartmanager id="WebPartManager1" runat="server" /> <asp:webpartzone id="zone1" runat="server" headertext="Main" CloseVerb-Enabled="false"> <zonetemplate> <uc1:AccountUserControlVB runat="server" id="accountwebpart" title="Account Form" /> </zonetemplate> </asp:webpartzone> </form> </body> </html>
<%@ page language="c#" %> <%@ register tagprefix="uc1" tagname="AccountUserControl" src="usercontrolverbcs.ascx"%> <html> <head runat="server"> <title> Personalizable User Control with IWebPart Properties </title> </head> <body> <form id="form1" runat="server"> <asp:webpartmanager id="WebPartManager1" runat="server" /> <asp:webpartzone id="zone1" runat="server" headertext="Main" CloseVerb-Enabled="false"> <zonetemplate> <uc1:AccountUserControl runat="server" id="accountwebpart" title="Account Form" /> </zonetemplate> </asp:webpartzone> </form> </body> </html>

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


IWebActionable プロパティ


関連項目
IWebActionable インターフェイスSystem.Web.UI.WebControls.WebParts 名前空間
Verbs
GenericWebPart.Verbs プロパティ
その他の技術情報
ASP.NET Web パーツ ページIWebActionable メンバ
- IWebActionableのページへのリンク