IWebActionable インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
WebPart コントロールまたは他のサーバー コントロールに、動詞のコレクションを格納できるようにします。
public interface class IWebActionable
public interface IWebActionable
type IWebActionable = interface
Public Interface IWebActionable
- 派生
例
次のコード例は、IWebActionable インターフェイスの簡単な実装を示します。 コード例の最初の部分では、インターフェイスをユーザー コントロールに実装する方法を示します。 ユーザー コントロールは、2 つのカスタム動詞を作成し、ユーザーがいずれかの動詞をクリックしたときに呼び出されるメソッドを定義することによって、 プロパティを実装 Verbs します。 わかりやすくするために、両方の動詞に同じメソッドが使用されます。 メソッドは、 という名前 VerbCounterClicks
のプロパティの値を更新します。 メソッドの Page_Load
コードは、 コントロールの プロパティにアクセス Verbs して、コレクション内のカスタム動詞の合計数を表示します。 このカウントには、標準の Web パーツ動詞は含まれません。
重要
この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。 詳細については、「スクリプトによる攻略の概要」を参照してください。
<%@ 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="" />
コード例の 2 番目の部分は、ユーザー コントロールをホストする.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 で表されます。 Web パーツ コントロール セットには、既定で使用できる標準の動詞が用意されています。この動詞は、ゾーンに WebPart 配置されたときにコントロールと同様 WebPart に動作するコントロールとその他のサーバー コントロール (カスタム、ASP.NET、ユーザー コントロールなど) に WebPartZoneBase 使用できます。 標準動詞には、閉じる、最小化する、復元する、削除する、編集する、エクスポートするなどがあります。
および サーバー コントロールで WebPart 使用するカスタム動詞を作成することもできます。 インターフェイスとそのVerbsプロパティをIWebActionable使用すると、カスタム動詞をコントロールに統合できます。 クラスは WebPart インターフェイスを IWebActionable 実装し、その 1 つのプロパティを実装します。 クラスを WebPart 継承するコントロールにカスタム動詞を追加するには、 プロパティを WebPart.Verbs オーバーライドし、カスタム動詞をコレクションに追加して、コレクションを返す必要があります。 プロパティによって WebPart.Verbs 参照されるコレクションには、カスタム動詞のみが含まれています。標準動詞は、このコレクションには含まれません。 既定ではコレクションにカスタム動詞がないため、WebPartコントロールnull
の プロパティの既定の戻り値WebPart.Verbsは です。
コントロールではない WebPart サーバー コントロールにカスタム動詞を追加するには、1 つの追加手順が必要です。 このような場合、コントロールは インターフェイスを IWebActionable 実装し、 プロパティを実装する Verbs 必要もあります。
カスタム動詞をコレクションに Verbs 追加すると、Web パーツ コントロール セットによって、カスタム動詞の作成とレンダリングに必要なその他の手順が自動的に処理されます。
プロパティ
Verbs |
カスタムの WebPartVerb オブジェクトのコレクションへの参照を取得します。 |
適用対象
こちらもご覧ください
.NET