Share via


基本的な SharePoint Web パーツの作成

このプログラミング タスクでは、基本的なカスタムの Windows SharePoint Services Web パーツを作成する手順について説明します。作成するのは、Web パーツの Title プロパティを変更できる簡単な Web パーツです。このプロパティは、Web パーツのタイトル バーのテキストを設定する、Windows SharePoint Services の WebPart 基本クラスのプロパティです。

重要

Windows SharePoint Services 3.0 から、Windows SharePoint Services の Web パーツ インフラストラクチャは Microsoft ASP.NET 2.0 の Web パーツ インフラストラクチャをベースにするようになり、ASP.NET の WebPart クラス クラスから派生する Web パーツが Windows SharePoint Services で完全にサポートされるようになりました。可能な場合には常に、ASP.NET の Web パーツを作成する必要があります。

派生元として最善の Web パーツ基本クラスを選択する方法の詳細については、Windows SharePoint Services ソフトウェア開発キット (SDK) の「Windows SharePoint Services で Web パーツを開発する」を参照してください。ASP.NET の Web パーツの詳細については、ASP.NET のマニュアルにある「Web パーツ コントロール セットの概要」を参照してください。

前提条件

Microsoft Visual Studio 2005

Windows SharePoint Services 3.0

手順 1 : 新しい Web コントロール ライブラリ プロジェクトを作成する

Web パーツは、ASP.NET の Web フォーム コントロールが基になっています。Web パーツは Microsoft Visual C# または Microsoft Visual Basic で作成し、その際には ASP.NET の Web コントロール ライブラリ テンプレートを使用します。

新しい Web コントロール ライブラリ プロジェクトを作成するには

  1. Visual Studio 2005 を起動します。

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

  3. [新しいプロジェクト] ダイアログ ボックスで、[Visual C# プロジェクト] または [Visual Basic プロジェクト] をクリックし、[Web コントロール ライブラリ] テンプレートをクリックします。

  4. 名前として「SimpleWebPart」と入力し、プロジェクト ファイルの保存場所を指定した後、[OK] をクリックします。

手順 2 : Microsoft.SharePoint.dll への参照を追加する

Web パーツを作成するには、Microsoft.SharePoint アセンブリ (Microsoft.SharePoint.dll) への参照を、Web コントロール ライブラリ プロジェクトに追加する必要があります。

Microsoft.SharePoint.dll への参照を追加するには

  1. [プロジェクト] メニューの [参照の追加] をクリックします。

  2. [.NET] タブの [Windows SharePoint Services] をダブルクリックします。

  3. [OK] をクリックします。

手順 3 : バージョン番号を設定し、部分的に信頼された呼び出し元をセットアップする

既定では、プロジェクトの AssemblyVersion プロパティは、Web パーツを再コンパイルするたびにインクリメントするように設定されています。Web パーツ ページでは、web.config ファイル内で指定されているバージョン番号で Web パーツを識別します。AssemblyVersion プロパティがインクリメントする設定になっている場合、Web パーツを Web パーツ ページにインポートした後で再コンパイルすると、Web パーツ フレームワークは web.config ファイル内で指定されているバージョン番号を検索します。バージョン番号が一致しないと、エラーが発生します。再コンパイルのたびに Web パーツのバージョン番号がインクリメントされないようにするには、AssemblyInfo ファイルでバージョン番号を設定する必要があります。

ここでは署名付きコードを作成するので、アセンブリに対し、部分的に信頼されたコードの呼び出しを許可するように指示する必要もあります。既定では、部分的に信頼されたコードでの使用を明示的に選択していない厳密な名前のアセンブリがある場合、そのアセンブリの呼び出しは、セキュリティ ポリシーによって完全信頼が付与された他のアセンブリからのみ実行できます。

バージョン番号を設定し、部分的に信頼された呼び出し元を許可するには

  1. ソリューション エクスプローラで、AssemblyInfo ファイルをダブルクリックします。

  2. 行を編集します。

    [assembly: AssemblyVersion(“1.0.*”)]
    
    <Assembly: AssemblyVersion(“1.0.*”)>
    

    上の行を、次のように変更します。

    [assembly: AssemblyVersion(“1.0.0.0”)]
    
    <Assembly: AssemblyVersion(“1.0.0.0”>
    
  3. 次の行を、ファイルの先頭に追加します。

    using System.Security;
    
    Imports System.Security;
    
  4. 次の行を、ファイルの末尾に追加します。

    [assembly: AllowPartiallyTrustedCallers]
    
    <Assembly: AllowPartiallyTrustedCallers()>
    

手順 4 : クラスと名前空間の名前を変更する

複数の Web パーツを作成する場合は、通常、すべての Web パーツで同じ名前空間を使用する必要があります。既定では、Web コントロール ライブラリによって、プロジェクトと同じ名前が名前空間に割り当てられます。この例では、WebPart クラスに任意の名前空間 MyWebParts を使用します。プロジェクトを作成すると空のクラス ファイルが表示されますが、既定のクラス名 WebCustomControl を変更して、新しい Web パーツを簡単に識別できるような名前を付けることができます。

クラスと名前空間の名前を変更するには

  1. 既定のクラスの名前を変更します。これには、ソリューション エクスプローラWebCustomControl1 を選択して右クリックし、[名前の変更] をクリックして、「SimpleWebPart」というファイル名を入力します。

  2. C# の場合は、Web パーツの名前空間を変更します。これには、次の行を編集します。

    namespace SimpleWebPart
    

    上の行を、次のように変更します。

    namespace MyWebParts
    
  3. Visual Basic の場合は、ソリューション エクスプローラSimpleWebPart プロジェクトを右クリックし、[プロパティ] をクリックして、[アセンブリ名] および [ルート名前空間] テキスト ボックスのテキストを「MyWebParts.SimpleWebPart」に変更します。

手順 5 : 名前空間ディレクティブを追加する

基本の WebPart クラスを簡単に記述できるようにするには、C# の場合は using ディレクティブ、Visual Basic の場合は Imports ディレクティブを使用して、コード内で次の名前空間を参照します。

名前空間ディレクティブを追加するには

  • 次の using ディレクティブまたは Imports ディレクティブを、コードの先頭付近に追加します。

    using Microsoft.SharePoint.WebPartPages;
    
    Imports Microsoft.SharePoint.WebPartPages
    

手順 6 : Web パーツ クラスから継承する

既定では、Web コントロール ライブラリ テンプレートによって、System.Web.UI.Control クラスから継承したカスタム コントロールが作成されます。 このクラスは、ASP.NET および SharePoint の両 WebPart クラスの親クラスです。SharePoint の Web パーツを作成するには、Microsoft.SharePoint.WebPartPages.WebPart 基本クラスから継承する必要があります。

Web パーツ基本クラスから継承するには

  • 次の行を探します。

    public class SimpleWebPart : WebControl
    
    Public Class SimpleWebPart
       Inherits WebControl
    

    上の行を、次の行に置き換えます。

    public class SimpleWebPart : WebPart
    
    Public Class SimpleWebPart
       Inherits WebPart
    

手順 7 : RenderWebPart メソッドを使用する

Web パーツ インフラストラクチャが Web パーツのコンテンツのレンダリングを制御する必要があるため、WebPart 基本クラスは、System.Web.UI.Control の Render メソッドをシールしています。このため、カスタム Web パーツでは、WebPart 基本クラスの RenderWebPart メソッドを無効にする必要があります。

RenderWebPart メソッドを使用するには

  • 次の行を探します。

    protected override void Render(HtmlTextWriter output)
    
    Protected Overrides Sub RenderContents(ByVal output as HtmlTextWriter)
    

    上の行を、次の行に置き換えます。

    protected override void RenderWebPart(HtmlTextWriter output)
    
    Protected Overrides Sub RenderWebPart(ByVal output as HtmlTextWriter)
    

手順 8 : Web パーツのロジックとレンダリングを定義する

ここまでの手順を完了したら、Web パーツのロジックとレンダリングを定義できます。このパーツには、いくつかの基本の ASP.NET コードを記述して、テキスト ボックスとボタンの 2 つのコントロールを作成します。これらのコントロールにより、Web パーツの Title プロパティが設定されます。

Web パーツのロジックとレンダリングを定義するには

  1. 2 つのユーザー インターフェイス オブジェクトを作成します。これには、次のコードを、SimpleWebPart ファイルの先頭付近に追加します。

    Button saveTitle;
    TextBox newTitle;
    
    Public saveTitle as Button
    Public newTitle as TextBox
    
  2. ボタン処理イベントを作成します。これには、次のコードをクラス内に追加します。

    public void saveTitle_click(object sender, EventArgs e)
    {
         this.Title = newTitle.Text;
         try
         {
              this.SaveProperties = true;
         }
         catch (Exception ex)
         {
              this.Title = "Error: " + ex.Message;
         }
    }
    
    Public Sub saveTitle_Click(ByVal sender As Object, ByVal e As EventArgs)
        Me.Title = newTitle.Text
        Try
            Me.SaveProperties = True
        Catch ex As Exception
            Me.Title = "Error: " & ex.Message
        End Try
    End Sub
    
  3. CreateChildControls() メソッドを無効にします。これには、次のコードをクラス内に追加します。

    protected override void CreateChildControls()
    {
         //Create text box
         newTitle = new TextBox();
         newTitle.Text = "";
         Controls.Add(newTitle);
    
         //Create button
         saveTitle = new Button();
         saveTitle.Text = "Set Web Part Title";
         saveTitle.Click += new EventHandler(saveTitle_click);
         Controls.Add(saveTitle);
    }
    
    Protected Overrides Sub CreateChildControls()
        'Create text box
        newTitle = New TextBox()
        newTitle.Text = ""
        Controls.Add(newTitle)
    
        'Create button
        saveTitle = New Button()
        saveTitle.Text = "Set Web Part Title"
        AddHandler saveTitle.Click, AddressOf saveTitle_Click
        Controls.Add(saveTitle)
    End Sub
    
  4. RenderWebPart() メソッドを、次のコード行に置き換えます。

    protected override void  RenderWebPart(HtmlTextWriter output)
    {
         RenderChildren(output);
    }
    
    Protected Overrides Sub RenderWebPart(ByVal output as HtmlTextWriter)
        RenderChildren(output)
    End Sub
    

手順 9 : アセンブリ用の有効な厳密名を作成する

Web パーツは、インターネットまたはイントラネット上で配布するものとして設計されています。セキュリティ上の理由により、カスタム Web パーツの作成時には、ユーザーが Web パーツを信頼できるように、Web パーツに厳密名を付与する必要があります。厳密名の付与の詳細については、「Windows SharePoint Services で Web パーツを展開する」と、このウォークスルーの最後にある「Related Topics」を参照してください。

アセンブリに厳密名を割り当てるには

  1. ソリューション エクスプローラで、SimpleWebPart プロジェクトを右クリックし、[プロパティ] をクリックします。

  2. SimpleWebPart のプロパティで、左側にある [署名] タブをクリックします。

  3. [署名] タブの、[アセンブリの署名] チェック ボックスをオンにします。

  4. [厳密な名前のキー ファイルを選択してください] ボックスの一覧から、[新規作成] を選択します。

  5. [厳密な名前キーの作成] ダイアログ ボックスで、「SimpleWebPartKey」と入力し、[キーファイルをパスワードで保護する] チェック ボックスをオフにします。

  6. これで、アセンブリはビルド時に署名されます。

手順 10 : Web パーツをビルドする

上記のコードをすべて追加したら、サンプル Web パーツをビルドすることができます。

Web パーツをビルドするには

  • [ビルド] メニューの [ソリューションのビルド] をクリックします。

手順 11 : DLL を bin ディレクトリにコピーする

Web パーツをビルドしたら、生成された DLL を bin ディレクトリにコピーする必要があります。

DLL を bin ディレクトリにコピーするには

  1. ファイル システムで SimpleWebPart.dll ファイルを探します。Visual Studio 2005 の場合、このファイルの既定の場所は、C:\Documents and Settings\ユーザー名\My Documents\Visual Studio 2005\Projects\SimpleWebPart\SimpleWebPart\bin\Debug です。

  2. SimpleWebPart.dll ファイルを、出力ディレクトリから、Web アプリケーション ルートにある bin ディレクトリにコピーします。 の Web アプリケーション ルートの既定の場所は、C:\Inetpub\wwwroot\wss\VirtualDirectories\ポート番号\bin です。

    詳細については、「[方法] Web アプリケーション ルートを調査する」を参照してください。

手順 12 : 既定の信頼レベルを上げ、Web パーツ用の SafeControl エントリを追加する

ユーザーが ASPX ページ内に不適切なサーバー側コードを追加しないようにするために、 では SafeControls リストを使用できます。SafeControls リストには、特定の SharePoint サイトに関して、サイト内のどの ASPX ページでも安全に起動できることを保証するコントロールと Web パーツを列挙します。このリストは、Web アプリケーション ルートの web.config ファイル内に指定します。ローカル パスには、web.config ファイルの物理的な場所を指定します。

既定の設定では、このサーバーに対する信頼レベルは WSS_Minimal で、Windows SharePoint Services オブジェクト モデルにはアクセスできません。この Web パーツで SaveProperties プロパティを設定するには、次の 3 つの作業のいずれかを行う必要があります。

  • アセンブリに対するカスタム ポリシー ファイルを作成します。

  • アセンブリをグローバル アセンブリ キャッシュにインストールします。

  • 仮想サーバー全体に対する信頼レベルを上げます。

この例では、web.config ファイルで、既定の信頼レベルを WSS_Minimal から WSS_Medium に上げます。

Note

web.config ファイルは、Web サイト用の仮想ディレクトリが実行されているフォルダ内にあります。通常、このディレクトリは c:\inetpub\wwwroot\wss\VirtualDirectories\PortNumber ですが、管理者が別の方法でディレクトリを設定している場合、ファイルはこの場所にないこともあります。

web.config ファイルの場所を探すには、インターネット インフォメーション サービス (IIS) スナップインを使用できます。IIS スナップインは、IIS 用の管理ツールで、他の管理機能と統合されています。IIS スナップインを起動して web.config ファイルの場所を探すには、次のようにします。

  1. [スタート] ボタンをクリックし、[プログラム]、[管理ツール] の順にポイントして、[インターネット インフォメーション サービス (IIS) マネージャ] をクリックします。

  2. ツリーで、コンピュータ名のノードを展開し、[Web サイト] を展開します。

  3. インストールしている Windows SharePoint Services の実行 Web サイトを特定します。多くの場合は、[既定の Web サイト] です。

  4. 右クリックして [プロパティ] をクリックします。

  5. [ホーム ディレクトリ] タブをクリックします。

既定の信頼レベルを上げ、Web パーツ用の SafeControl エントリを追加するには

  1. Web アプリケーション ルートにある web.config ファイルを開きます。

  2. trust セクションで、level 属性の WSS_Minimal を「WSS_Medium」に変更します。

  3. web.config ファイルの SafeControls セクションに、カスタム アセンブリ用の SafeControl エントリを次のように追加します。

    <SafeControl Assembly="SimpleWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=PublicKeyToken" Namespace="MyWebParts" TypeName="SimpleWebPart" Safe="True"/>
    
  4. PublicKeyToken を、Web パーツのアセンブリに使用する実際の値に置き換えます。Web パーツ用の正しい PublicKeyToken を確認するには、コマンド ライン ユーティリティ sn.exe を使用します。

    sn.exe -T C:\inetpub\wwwroot\wss\VirtualDirectories\PortNumber\bin\SimpleWebPart.dll
    

手順 13 : Web パーツ展開用の DWP ファイルを作成する

Web パーツ定義ファイル (.dwp) は、単一の Web パーツのプロパティ設定値を格納する簡単な XML ファイルです。.dwp ファイルをアップロードするだけで、Web パーツ ページに Web パーツをインポートできます。Web パーツをアップロードしたら、Web パーツ ページのゾーンのいずれかに Web パーツをドラッグして表示できます。

.dwp ファイルで必須のプロパティは、Assembly と TypeName の 2 つです。ただし、インポートの後で Web パーツの既定の名前と説明を表示するには、Title プロパティと Description プロパティも含める必要があります。インポート中に他の Web パーツ プロパティを設定する場合は、それらのプロパティも .dwp ファイル内で定義できます。.dwp ファイルの形式は次のとおりです。

<?xml version="1.0"?>
<WebPart xmlns="https://schemas.microsoft.com/WebPart/v2">
   <Assembly>AssemblyName(with no .dll extension),
     Version=VersionNumber, Culture=Culture,
     PublicKeyToken=PublicKeyToken</Assembly>
   <TypeName>WebPartNameSpace.WebPartClassName</TypeName>
   <Title>DefaultWebPartTitle</Title>
   <Description>WebPartDescription</Description>
</WebPart>

DWP ファイルを作成するには

  1. 次の XML をコピーして、新しいテキスト ファイルに貼り付けます。

    <?xml version="1.0"?>
    <WebPart xmlns="https://schemas.microsoft.com/WebPart/v2">
       <Assembly>SimpleWebPart, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=PublicKeyToken</Assembly>
       <TypeName>MyWebParts.SimpleWebPart</TypeName>
       <Title>My Simple Web Part</Title>
       <Description>A simple Web Part</Description>
    </WebPart>
    

    重要

    XML 内の PublicKeyToken は、アセンブリ用の公開キー トークンに置き換えてください。

  2. このファイルに「SimpleWebPart.dwp」という名前を付け、Web アプリケーション ルートの bin ディレクトリに保存します。

手順 14 : Web パーツを Web パーツ ページにインポートする

Web パーツを使用およびテストするには、Windows SharePoint Services または Microsoft Office SharePoint Server 2007 が稼働しているサーバー上の Web パーツ ページに Web パーツをインポートします。

Web パーツをインポートするには

  1. SharePoint サイトの中で、Web パーツをアクセス可能にするページに移動します。

  2. Web バーツ ページで [サイトの操作] メニューの [サイトの設定] をクリックします。

  3. [サイトの設定] ページで、見出し [ギャラリー] にある [Web パーツ] をクリックします。

  4. Web パーツ ギャラリーで、ツール バーの [アップロード] をクリックします。

  5. [Web パーツのアップロード] ページで、[参照] をクリックし、作成した .dwp ファイルを選択します。

    注意

    このファイルは、C:\inetpub\wwwroot\wss\VirtualDirectories\PortNumber\bin\ にあります。

    [OK] をクリックします。

  6. Web パーツ ページに戻り、[サイトの操作] をクリックして、[ページの編集] を選択します。

  7. 任意のゾーンで [Web パーツの追加] をクリックし、ダイアログ ボックス内の [My Simple Web Part] の横にあるチェック ボックスをオンにして、[追加] をクリックします。

  8. Web パーツをゾーンに追加したら、テキスト ボックスに適切なテキストを入力し、[Set Web Part Title] をクリックして Web パーツをテストします。

See Also

その他のリソース

Assembly Signing Frequently Asked Questions