IWebActionable 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
WebPart 컨트롤이나 기타 서버 컨트롤에서 동사 컬렉션을 포함할 수 있도록 합니다.
public interface class IWebActionable
public interface IWebActionable
type IWebActionable = interface
Public Interface IWebActionable
- 파생
예제
다음 코드 예제에서는 IWebActionable 인터페이스의 간단한 구현을 보여 줍니다. 코드 예제의 첫 번째 부분에서는 인터페이스가 사용자 정의 컨트롤에서 구현되는 방법을 보여줍니다. 사용자 컨트롤은 두 개의 사용자 지정 동사를 만들고 사용자가 동사 중 하나를 클릭할 때 호출되는 메서드를 정의하여 속성을 구현 Verbs 합니다. 간단히 하기 위해 동사 모두에 동일한 메서드가 사용됩니다. 메서드는 라는 VerbCounterClicks
속성의 값을 업데이트합니다. 메서드에 Page_Load
대 한 코드에 액세스 합니다 Verbs 의 속성을 컨트롤 컬렉션에 사용자 지정 동사의 총 수를 표시 합니다. 이 개수에는 표준 웹 파트 동사가 포함되지 않습니다.
중요
이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 Script Exploits Overview를 참조하세요.
<%@ 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="" />
코드 예제의 두 번째 부분은 사용자 컨트롤을 호스트하는 .aspx 페이지입니다. 컨트롤은 컨트롤에서 WebPartZone 참조되므로 런타임에 ASP.NET 컨트롤에서 사용자 컨트롤을 GenericWebPart 래핑하고 컨트롤로 WebPart 처리합니다. 브라우저에서 페이지를 로드한 후 컨트롤 아래쪽의 레이블에 속성에서 참조 Verbs 하는 컬렉션에 있는 사용자 지정 동사 수를 표시합니다. 또한 컨트롤에서 동사 메뉴를 클릭하고 동사 중 하나를 클릭하면 사용자 지정 동사를 클릭한 총 횟수를 표시하는 다른 레이블이 나타납니다.
<%@ 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>
설명
컨트롤의 WebPart 동사는 사용자가 UI(사용자 인터페이스)에서 수행할 수 있는 작업입니다. 일반적으로 동사는 단추, 링크 또는 메뉴 항목과 같은 클릭 가능한 컨트롤로 UI에 표시됩니다. 웹 파트 컨트롤 집합은 영역에 배치될 때 컨트롤처럼 WebPart 작동할 WebPart 수 있는 컨트롤 및 기타 서버 컨트롤(예: 사용자 지정, ASP.NET 및 사용자 컨트롤)에 기본적으로 사용할 수 있는 WebPartZoneBase 표준 동사를 제공합니다. 표준 동사에는 닫기, 최소화, 복원, 삭제, 편집 및 내보내기를 포함합니다.
및 서버 컨트롤과 함께 WebPart 사용할 사용자 지정 동사를 만들 수도 있습니다. 인터페이스는 IWebActionable 해당 Verbs 속성을 사용하여 사용자 지정 동사를 컨트롤에 통합하는 방법을 제공합니다. 클래스는 WebPart 인터페이스를 IWebActionable 구현하고 단일 속성을 구현합니다. 클래스에서 상속하는 컨트롤에 사용자 지정 동사를 추가하려면 속성을 재정의 WebPart 하고, 컬렉션에 WebPart.Verbs 사용자 지정 동사를 추가하고, 컬렉션을 반환해야 합니다. 속성에서 WebPart.Verbs 참조하는 컬렉션에는 사용자 지정 동사만 포함됩니다. 표준 동사는 이 컬렉션에 포함되지 않습니다. 기본적으로 컬렉션에 WebPart.Verbs 사용자 지정 동사가 없으므로 컨트롤에 있는 WebPart 속성의 기본 반환 값은 입니다 null
.
컨트롤이 아닌 WebPart 서버 컨트롤에 사용자 지정 동사를 추가하려면 한 단계 더 추가해야 합니다. 이러한 경우 컨트롤은 인터페이스를 구현 IWebActionable 하고 속성을 구현 Verbs 해야 합니다.
컬렉션에 Verbs 사용자 지정 동사를 추가한 후 웹 파트 컨트롤 집합은 사용자 지정 동사를 만들고 렌더링하는 데 필요한 다른 단계를 자동으로 처리합니다.
속성
Verbs |
사용자 지정 WebPartVerb 개체의 컬렉션에 대한 참조를 가져옵니다. |
적용 대상
추가 정보
.NET