IWebActionable Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee kunnen besturingselementen of andere serverbesturingselementen WebPart verzamelingen werkwoorden bevatten.
public interface class IWebActionable
public interface IWebActionable
type IWebActionable = interface
Public Interface IWebActionable
- Afgeleid
Voorbeelden
In het volgende codevoorbeeld ziet u een eenvoudige implementatie van de IWebActionable interface. In het eerste deel van het codevoorbeeld ziet u hoe de interface wordt geïmplementeerd in een gebruikersbeheer. Het gebruikersbesturingselement implementeert de Verbs eigenschap door twee aangepaste werkwoorden te maken en een methode te definiëren die wordt aangeroepen wanneer een gebruiker op een van de werkwoorden klikt. Voor het gemak wordt dezelfde methode gebruikt voor beide werkwoorden. De methode werkt de waarde van een eigenschap met de naam VerbCounterClicksbij. De code voor de Page_Load methode heeft toegang tot de Verbs eigenschap van het besturingselement om het totale aantal aangepaste werkwoorden in de verzameling weer te geven. Dit aantal bevat niet de standaardwerkwoorden voor webonderdelen.
Important
Dit voorbeeld heeft een tekstvak dat gebruikersinvoer accepteert. Dit is een mogelijke beveiligingsrisico. Standaard valideren ASP.NET webpagina's dat gebruikersinvoer geen script- of HTML-elementen bevat. Zie Overzicht van Script Exploits voor meer informatie.
<%@ 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="" />
Het tweede deel van het codevoorbeeld is een .aspx pagina waarop het gebruikersbeheer wordt gehost. Omdat naar het besturingselement wordt verwezen in een besturingselement WebPartZone, wordt tijdens ASP.NET runtime het besturingselement in een besturingselement GenericWebPart verpakt en als een WebPart besturingselement behandeld. Nadat u de pagina in een browser hebt geladen, ziet u dat in het label onder aan het besturingselement wordt weergegeven hoeveel aangepaste werkwoorden in de verzameling staan waarnaar wordt verwezen door de Verbs eigenschap. Houd er ook rekening mee dat als u op het menu Werkwoorden in het besturingselement klikt en op een van de werkwoorden klikt, een ander label wordt weergegeven met het totale aantal keren dat op de aangepaste werkwoorden is geklikt.
<%@ 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>
Opmerkingen
Een werkwoord in WebPart besturingselementen is een actie die een gebruiker kan uitvoeren in de gebruikersinterface (UI). Normaal gesproken wordt een werkwoord weergegeven in de gebruikersinterface door een besturingselement dat kan worden geklikt, zoals een knop, een koppeling of een menu-item. De besturingsset webonderdelen bevat standaardwerkwoorden die standaard beschikbaar zijn voor WebPart besturingselementen en andere serverbesturingselementen (zoals aangepaste, ASP.NET en gebruikersbesturingselementen) die kunnen fungeren als WebPart besturingselementen wanneer ze in WebPartZoneBase zones worden geplaatst. Standaardwerkwoorden zijn sluiten, minimaliseren, herstellen, verwijderen, bewerken en exporteren.
U kunt ook aangepaste werkwoorden maken voor gebruik met WebPart en serverbesturingselementen. De IWebActionable interface, met Verbs de eigenschap ervan, biedt u een manier om aangepaste werkwoorden te integreren in uw besturingselementen. De WebPart klasse implementeert de IWebActionable interface en implementeert de afzonderlijke eigenschap. Als u aangepaste werkwoorden wilt toevoegen aan een besturingselement dat van de WebPart klasse overschrijft, moet u de WebPart.Verbs eigenschap overschrijven, aangepaste werkwoorden toevoegen aan een verzameling en de verzameling retourneren. De verzameling waarnaar wordt verwezen door de WebPart.Verbs eigenschap bevat alleen aangepaste werkwoorden. Standaardwerkwoorden zijn niet opgenomen in deze verzameling. De standaard retourwaarde van de WebPart.Verbs eigenschap in een WebPart besturingselement is null, omdat er standaard geen aangepaste werkwoorden in de verzameling zijn.
Voor het toevoegen van aangepaste werkwoorden aan serverbesturingselementen die geen WebPart besturingselementen zijn, is één extra stap vereist. In die gevallen moeten de besturingselementen ook de IWebActionable interface implementeren en de Verbs eigenschap implementeren.
Nadat u aangepaste werkwoorden aan de Verbs verzameling hebt toegevoegd, verwerkt het besturingselement voor webonderdelen automatisch de andere stappen die nodig zijn om de aangepaste werkwoorden te maken en weer te geven.
Eigenschappen
| Name | Description |
|---|---|
| Verbs |
Hiermee haalt u een verwijzing op naar een verzameling aangepaste WebPartVerb objecten. |