Teilen über


IWebActionable Schnittstelle

Definition

Ermöglicht, dass WebPart-Steuerelemente oder andere Serversteuerelemente Auflistungen mit Verben enthalten.

public interface class IWebActionable
public interface IWebActionable
type IWebActionable = interface
Public Interface IWebActionable
Abgeleitet

Beispiele

Das folgende Codebeispiel veranschaulicht eine einfache Implementierung der IWebActionable-Schnittstelle. Der erste Teil des Codebeispiels zeigt, wie die Schnittstelle in einem Benutzersteuerelement implementiert wird. Das Benutzersteuerelement implementiert die Verbs -Eigenschaft, indem zwei benutzerdefinierte Verben erstellt und eine Methode definiert wird, die aufgerufen wird, wenn ein Benutzer auf eines der Verben klickt. Der Einfachheit halber wird für beide Verben dieselbe Methode verwendet. Die -Methode aktualisiert den Wert einer Eigenschaft mit dem Namen VerbCounterClicks. Der Code für die Page_Load -Methode greift auf die Verbs -Eigenschaft des -Steuerelements zu, um die Gesamtanzahl der benutzerdefinierten Verben in der Auflistung anzuzeigen. Diese Anzahl umfasst nicht die Standardverben von Webparts.

Wichtig

Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<%@ 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();
  }


  // <snippet3>
  // 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;
    }
  }
  // </snippet3>
  
</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="" />
<%@ 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

  ' <snippet3>
  ' 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
  ' </snippet3>

</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="" />

Der zweite Teil des Codebeispiels ist eine .aspx Seite, die das Benutzersteuerelement hostet. Da in einem WebPartZone Steuerelement auf das Steuerelement verwiesen wird, umschließt ASP.NET zur Laufzeit das Benutzersteuerelement in ein GenericWebPart Steuerelement und behandelt es als WebPart Steuerelement. Nachdem Sie die Seite in einem Browser geladen haben, sehen Sie, dass die Bezeichnung unten im Steuerelement anzeigt, wie viele benutzerdefinierte Verben in der Auflistung enthalten sind, auf die von der Verbs -Eigenschaft verwiesen wird. Beachten Sie außerdem, dass, wenn Sie im Steuerelement auf das Menü Verben klicken und auf eines der Verben klicken, eine andere Bezeichnung angezeigt wird, die die Gesamtzahl der Klicks auf die benutzerdefinierten Verben anzeigt.

<%@ page language="c#" %>
<%@ register tagprefix="uc1" 
    tagname="AccountUserControl" 
    src="usercontrolverbcs.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:AccountUserControl 
            runat="server" 
            id="accountwebpart" 
            title="Account Form" />
        </zonetemplate>
      </asp:webpartzone> 
    </form>
  </body>
</html>
<%@ 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>

Hinweise

Ein Verb in WebPart Steuerelementen ist eine Aktion, die ein Benutzer auf der Benutzeroberfläche (UI) ausführen kann. In der Regel wird ein Verb auf der Benutzeroberfläche durch ein klickbares Steuerelement wie eine Schaltfläche, einen Link oder ein Menüelement dargestellt. Der Webparts-Steuerelementsatz stellt Standardverben bereit, die standardmäßig für WebPart Steuerelemente und andere Serversteuerelemente (z. B. benutzerdefinierte, ASP.NET und Benutzersteuerelemente) verfügbar sind, die wie WebPart Steuerelemente fungieren können, wenn sie in WebPartZoneBase Zonen platziert werden. Standardverben umfassen Schließen, Minimieren, Wiederherstellen, Löschen, Bearbeiten und Exportieren.

Sie können auch benutzerdefinierte Verben für die Verwendung mit WebPart - und -Serversteuerelementen erstellen. Die IWebActionable -Schnittstelle mit ihrer Verbs -Eigenschaft bietet Ihnen eine Möglichkeit, benutzerdefinierte Verben in Ihre Steuerelemente zu integrieren. Die WebPart -Klasse implementiert die IWebActionable -Schnittstelle und ihre einzelne Eigenschaft. Um einem Steuerelement, das von der WebPart -Klasse erbt, benutzerdefinierte Verben hinzuzufügen, müssen Sie die WebPart.Verbs -Eigenschaft überschreiben, einer Auflistung benutzerdefinierte Verben hinzufügen und die Auflistung zurückgeben. Die Auflistung, auf die von der WebPart.Verbs -Eigenschaft verwiesen wird, enthält nur benutzerdefinierte Verben. Standardverben sind in dieser Auflistung nicht enthalten. Der Standardrückgabewert der WebPart.Verbs Eigenschaft in einem WebPart Steuerelement ist null, da standardmäßig keine benutzerdefinierten Verben in der Auflistung vorhanden sind.

Das Hinzufügen benutzerdefinierter Verben zu Serversteuerelementen, die keine WebPart Steuerelemente sind, erfordert einen zusätzlichen Schritt. In diesen Fällen müssen die Steuerelemente auch die IWebActionable -Schnittstelle implementieren und die Verbs -Eigenschaft implementieren.

Nachdem Sie der Verbs Auflistung benutzerdefinierte Verben hinzugefügt haben, verarbeitet der Webparts-Steuerelementsatz automatisch die anderen Schritte, die zum Erstellen und Rendern der benutzerdefinierten Verben erforderlich sind.

Eigenschaften

Verbs

Ruft einen Verweis auf eine Auflistung benutzerdefinierter WebPartVerb-Objekte ab.

Gilt für:

Weitere Informationen