IWebActionable Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
WebPart Umožňuje ovládacím prvkům nebo jiným ovládacím prvkům serveru obsahovat kolekce sloves.
public interface class IWebActionable
public interface IWebActionable
type IWebActionable = interface
Public Interface IWebActionable
- Odvozené
Příklady
Následující příklad kódu ukazuje jednoduchou implementaci IWebActionable rozhraní. První část příkladu kódu ukazuje, jak je rozhraní implementováno v uživatelském ovládacím prvku. Uživatelský ovládací prvek implementuje Verbs vlastnost tak, že vytvoří dva vlastní příkazy a definuje metodu, která je volána, když uživatel klikne na některou z příkazů. Pro jednoduchost se pro oba příkazy používá stejná metoda. Metoda aktualizuje hodnotu vlastnosti s názvem VerbCounterClicks
. Kód metody Page_Load
přistupuje k Verbs vlastnosti ovládacího prvku pro zobrazení celkového počtu vlastních sloves v kolekci. Tento počet nezahrnuje standardní příkazy webových částí.
Důležité
Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřte, že uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete v tématu Přehled zneužití skriptů.
<%@ 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="" />
Druhou částí příkladu kódu je .aspx stránka, která je hostitelem uživatelského ovládacího prvku. Protože se na ovládací prvek odkazuje v ovládacím WebPartZone prvku, ASP.NET zabalí uživatelský ovládací prvek do GenericWebPart ovládacího prvku a považuje ho WebPart za ovládací prvek. Po načtení stránky v prohlížeči si všimněte, že popisek v dolní části ovládacího prvku zobrazuje, kolik vlastních sloves je v kolekci, na které Verbs vlastnost odkazuje. Všimněte si také, že pokud kliknete na nabídku sloves v ovládacím prvku a kliknete na některý ze sloves, zobrazí se další popisek s celkovým počtem kliknutí na vlastní příkazy.
<%@ 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>
Poznámky
Příkaz v WebPart ovládacích prvcích je akce, kterou může uživatel provést v uživatelském rozhraní. Příkaz je obvykle reprezentován v uživatelském rozhraní ovládacím prvku, na který lze kliknout, například tlačítkem, odkazem nebo položkou nabídky. Sada ovládacích prvků webové části poskytuje standardní příkazy, které jsou ve výchozím nastavení k dispozici pro WebPart ovládací prvky a další serverové ovládací prvky (například vlastní, ASP.NET a uživatelské ovládací prvky), které mohou při umístění do WebPartZoneBase zón fungovat jako WebPart ovládací prvky. Mezi standardní operace patří zavřít, minimalizovat, obnovit, odstranit, upravit a exportovat.
Můžete také vytvořit vlastní příkazy pro použití se serverovými ovládacími WebPart prvky a . Rozhraní IWebActionable se svou Verbs vlastností umožňuje integrovat do ovládacích prvků vlastní příkazy. Třída WebPart implementuje IWebActionable rozhraní a implementuje jeho jednu vlastnost. Chcete-li přidat vlastní příkazy do ovládacího prvku, který dědí z WebPart třídy , je nutné přepsat WebPart.Verbs vlastnost, přidat vlastní příkazy do kolekce a vrátit kolekci. Kolekce, na kterou WebPart.Verbs odkazuje vlastnost, obsahuje pouze vlastní příkazy; standardní příkazy nejsou zahrnuty v této kolekci. Výchozí návratová hodnota WebPart.Verbs vlastnosti v ovládacím WebPart prvku je null
, protože ve výchozím nastavení nejsou v kolekci žádné vlastní příkazy.
Přidání vlastních sloves do ovládacích prvků serveru, které nejsou WebPart ovládacími prvky, vyžaduje jeden krok navíc. V těchto případech musí ovládací prvky také implementovat IWebActionable rozhraní a implementovat Verbs vlastnost .
Po přidání vlastních sloves do Verbs kolekce sada ovládacích prvků webové části automaticky zpracuje další kroky potřebné k vytvoření a vykreslení vlastních příkazů.
Vlastnosti
Verbs |
Získá odkaz na kolekci vlastních WebPartVerb objektů. |