IWebActionable Interface
Enables WebPart controls or other server controls to contain collections of verbs.
Assembly: System.Web (in System.Web.dll)
| Name | Description | |
|---|---|---|
![]() | Verbs | Gets a reference to a collection of custom WebPartVerb objects. |
A verb in WebPart controls is an action that a user can carry out in the user interface (UI). Typically, a verb is represented in the UI by a clickable control such as a button, a link, or a menu item. The Web Parts control set provides standard verbs that are available by default to WebPart controls and other server controls (such as custom, ASP.NET, and user controls) that can act like WebPart controls when placed in WebPartZoneBase zones. Standard verbs include close, minimize, restore, delete, edit, and export.
You can also create custom verbs for use with WebPart and server controls. The IWebActionable interface, with its Verbs property, gives you a way to integrate custom verbs into your controls. The WebPart class implements the IWebActionable interface and implements its single property. To add custom verbs to a control that inherits from the WebPart class, you must override the WebPart.Verbs property, add custom verbs to a collection, and return the collection. The collection referenced by the WebPart.Verbs property contains only custom verbs; standard verbs are not included in this collection. The default return value of the WebPart.Verbs property in a WebPart control is null, because by default there are no custom verbs in the collection.
Adding custom verbs to server controls that are not WebPart controls requires one extra step. In those cases, the controls must also implement the IWebActionable interface and implement the Verbs property.
After you have added custom verbs to the Verbs collection, the Web Parts control set automatically handles the other steps necessary to create and render the custom verbs.
The following code example demonstrates a simple implementation of the IWebActionable interface. The first part of the code example shows how the interface is implemented in a user control. The user control implements the Verbs property by creating two custom verbs and defining a method that is called when a user clicks either of the verbs. For simplicity, the same method is used for both verbs. The method updates the value of a property named VerbCounterClicks. The code for the Page_Load method accesses the Verbs property of the control to display the total count of custom verbs in the collection. This count does not include the standard Web Parts verbs.
Security Note
|
|---|
This example has a text box that accepts user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview. |
<%@ 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" AssociatedControlID="Textbox1"> Name</asp:label> <asp:textbox id="Textbox1" runat="server" /> </div> <div> <asp:label id="Label2" runat="server" AssociatedControlID="Textbox2"> 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="" />
The second part of the code example is an .aspx page that hosts the user control. Because the control is referenced in a WebPartZone control, at run time ASP.NET wraps the user control in a GenericWebPart control and treats it as a WebPart control. After you load the page in a browser, notice that the label at the bottom of the control displays how many custom verbs are in the collection referenced by the Verbs property. Also note that if you click the verbs menu in the control, and click either of the verbs, another label appears showing the total number of times the custom verbs have been clicked.
<%@ page language="vb" %> <%@ register tagprefix="uc1" tagname="AccountUserControlVB" src="usercontrolverbvb.ascx"%> <!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> 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>
Available since 2.0

