委任コントロールをカスタマイズする
最終更新日: 2010年7月9日
適用対象: SharePoint Foundation 2010
この例では、委任コントロールを作成して実装する基本プロセスを紹介します。委任コントロールはページの AdditionalPageHead コントロールにあります。このコントロールは、ページにいくつかの ECMAScript (JavaScript、JScript) を登録します。
委任コントロールをビルドするには
Microsoft Visual Studio 2010 の SharePoint 開発者ツールを起動します。
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[プロジェクトの種類] で、[Visual Basic] または [C#] の [空の SharePoint プロジェクト] を選択します。
プロジェクト名として「EcmaScriptDelegate」と入力します。[OK] をクリックします。
SharePoint カスタマイズ ウィザードで、[ファーム ソリューションとして配置する] を選択します。[完了] をクリックします。
ソリューション エクスプローラーで、[EcmaScriptDelegate] プロジェクトを右クリックします。[追加]、[新しいアイテム] を選択します。
[新しいアイテムの追加] ダイアログ ボックスで、[コード] グループをクリックし、[クラス] テンプレートを選択します。名前として「EcmaScriptDelegateControl」と入力し、[追加] をクリックします。
次に、System.Web に参照を追加します。ソリューション エクスプローラーで、[参照設定] フォルダーを右クリックし、[参照の追加] を選択します。[参照の追加] ダイアログ ボックスで、[.NET] タブをクリックし、リストから [System.Web] を探します。[OK] をクリックします。
表示された EcmaScriptDelegateControl ファイルで、ステートメントを使用して以下を追加します。
using System.Web.UI.WebControls;
Imports System.Web.UI.WebControls
以下の行を変更して、EcmaScriptDelegateControl の基底クラスを WebControl に変更します。
class EcmaScriptDelegateControl : WebControl
Public Class EcmaScriptDelegateControl Inherits WebControl
以下のコードを追加して OnLoad メソッドをオーバーライドします。
protected override void OnLoad(EventArgs e) { base.OnLoad(e); }
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) MyBase.OnLoad(e) End Sub
OnLoad メソッド内で、ページに JavaScript を配置するために以下のコードを追加します。
string helloAlert = "alert('Hello, world!');"; this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "popup", helloAlert, true);
Dim helloAlert As String = "alert('Hello, world!');" Me.Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "popup", helloAlert, True)
これで、プロジェクトの委任コントロールがビルドできました。次に、コントロールを展開するフィーチャーを作成します。
コントロールを展開するフィーチャーを作成するには
ソリューション エクスプローラーで、[EcmaScriptDelegate] プロジェクトを右クリックして、[追加]、[新しいアイテム] を選択します。
[新しい項目の追加] ダイアログ ボックスで、[空の要素] テンプレートを選択し、[名前] として「EcmaScriptDelegateFeature」と入力します。[追加] をクリックします。
Elements 要素内に以下の XML を挿入します。Id 属性はコントロールが表示される委任を識別します。ControlAssembly と ControlClass 属性はコントロールで一意です。完全なアセンブリ名を探す方法の詳細については、「[方法] アセンブリの完全な名前を取得するツールを作成する」を参照してください。
<Control Id="AdditionalPageHead" ControlAssembly="EcmaScriptDelegate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=public key token" ControlClass="EcmaScriptDelegate.EcmaScriptDelegateControl">
これでコントロールと、そのコントロールを展開するために必要なフィーチャーの両方が準備できました。コントロールをページで実行するには、web.config ファイルで SafeControl エントリが必要です。以下の手順で、コントロールに SafeControl エントリを追加します。
SafeControl エントリを追加するには
ソリューション エクスプローラーで、[EcmaScriptDelegateFeature] をクリックして、[安全なコントロール エントリ] プロパティの [...] をクリックします。
[安全なコントロール エントリ] ダイアログ ボックスで [追加] をクリックします。
[プロパティ] ボックスで、[名前空間] プロパティが適切な値であることを確認してください。これはコントロールの名前空間です。また、[安全] プロパティが true に設定されていることを確認してください。[OK] をクリックします。
これで SafeControl エントリが追加されたので、次にソリューションを展開することができます。
委任コントロールを展開してテストするには
F5 キーを押してソリューションを実行します。
ページが読み込まれると、Hello, world! という文字列を含むダイアログ ボックスが表示されます。これが委任コントロールがページに追加したスクリプトです。