委任コントロールをカスタマイズする

最終更新日: 2010年7月9日

適用対象: SharePoint Foundation 2010

この例では、委任コントロールを作成して実装する基本プロセスを紹介します。委任コントロールはページの AdditionalPageHead コントロールにあります。このコントロールは、ページにいくつかの ECMAScript (JavaScript、JScript) を登録します。

委任コントロールをビルドするには

  1. Microsoft Visual Studio 2010 の SharePoint 開発者ツールを起動します。

  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  3. [プロジェクトの種類] で、[Visual Basic] または [C#] の [空の SharePoint プロジェクト] を選択します。

  4. プロジェクト名として「EcmaScriptDelegate」と入力します。[OK] をクリックします。

  5. SharePoint カスタマイズ ウィザードで、[ファーム ソリューションとして配置する] を選択します。[完了] をクリックします。

  6. ソリューション エクスプローラーで、[EcmaScriptDelegate] プロジェクトを右クリックします。[追加]、[新しいアイテム] を選択します。

  7. [新しいアイテムの追加] ダイアログ ボックスで、[コード] グループをクリックし、[クラス] テンプレートを選択します。名前として「EcmaScriptDelegateControl」と入力し、[追加] をクリックします。

  8. 次に、System.Web に参照を追加します。ソリューション エクスプローラーで、[参照設定] フォルダーを右クリックし、[参照の追加] を選択します。[参照の追加] ダイアログ ボックスで、[.NET] タブをクリックし、リストから [System.Web] を探します。[OK] をクリックします。

  9. 表示された EcmaScriptDelegateControl ファイルで、ステートメントを使用して以下を追加します。

    using System.Web.UI.WebControls;
    
    Imports System.Web.UI.WebControls
    
  10. 以下の行を変更して、EcmaScriptDelegateControl の基底クラスを WebControl に変更します。

    class EcmaScriptDelegateControl : WebControl
    
    Public Class EcmaScriptDelegateControl
      Inherits WebControl
    
  11. 以下のコードを追加して OnLoad メソッドをオーバーライドします。

    protected override void OnLoad(EventArgs e)
    {
      base.OnLoad(e);
    }
    
    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
      MyBase.OnLoad(e)
    End Sub
    
  12. 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)
    

これで、プロジェクトの委任コントロールがビルドできました。次に、コントロールを展開するフィーチャーを作成します。

コントロールを展開するフィーチャーを作成するには

  1. ソリューション エクスプローラーで、[EcmaScriptDelegate] プロジェクトを右クリックして、[追加]、[新しいアイテム] を選択します。

  2. [新しい項目の追加] ダイアログ ボックスで、[空の要素] テンプレートを選択し、[名前] として「EcmaScriptDelegateFeature」と入力します。[追加] をクリックします。

  3. 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 エントリを追加するには

  1. ソリューション エクスプローラーで、[EcmaScriptDelegateFeature] をクリックして、[安全なコントロール エントリ] プロパティの [...] をクリックします。

  2. [安全なコントロール エントリ] ダイアログ ボックスで [追加] をクリックします。

  3. [プロパティ] ボックスで、[名前空間] プロパティが適切な値であることを確認してください。これはコントロールの名前空間です。また、[安全] プロパティが true に設定されていることを確認してください。[OK] をクリックします。

これで SafeControl エントリが追加されたので、次にソリューションを展開することができます。

委任コントロールを展開してテストするには

  1. F5 キーを押してソリューションを実行します。

  2. ページが読み込まれると、Hello, world! という文字列を含むダイアログ ボックスが表示されます。これが委任コントロールがページに追加したスクリプトです。

関連項目

参照

DelegateControl

概念

委任コントロール (コントロールのテンプレート化)

委任コントロール