WebPartZoneBase.OnCreateVerbs Method (WebPartVerbsEventArgs)
Raises the CreateVerbs event.
Assembly: System.Web (in System.Web.dll)
You can override the OnCreateVerbs method in a derived WebPartZoneBase zone class to add additional WebPartVerb objects to the collection of standard verbs in your zone. You can do this by adding verbs to the collection in the Verbs property.
The following code example demonstrates a way to create a handler for the CreateVerbs event by overriding the OnCreateVerbs method to add a custom verb to a derived WebPartZoneBase zone.
The code example contains two source files. For the code example to run, you must compile this source code. You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. This code example uses dynamic compilation. For a walkthrough that demonstrates how to compile, see Walkthrough: Developing and Using a Custom Web Server Control.
The first part of the code example is the source code for a simple control derived from the WebPart class.
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
The second part of the code example is the source code for a derived WebPartZoneBase zone that overrides the OnCreateVerbs method to add a custom verb to the zone. The code also creates a custom verb that appears in the verbs menu of WebPart controls contained in the zone, and the verb creates another copy of the current WebPart control.
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 'NewNew 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
The third part of the code example is a Web page that hosts the derived zone and WebPart control. Near the top of the page is a Register directive to reference the derived zone component. If you load the page in a browser, the WebPart control appears in the zone. Click the verbs menu, then click the CopyWebPart verb, and it creates a copy of the control.
<%@ 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>
Available since 2.0