委任コントロール (コントロールのテンプレート化)
最終更新日: 2009年10月1日
適用対象: SharePoint Foundation 2010
Microsoft SharePoint Foundation は、特定の機能の候補コントロールを宣言する単純なメカニズムと、単一の機能プロバイダーを選択するためのメカニズムを備えています。フィーチャーを使用することで、選択した機能の候補となるコントロール テンプレートを識別できます。
コントロールは、コントロールにより提供される機能に基づいて識別されます。Feature 要素を使用して、そのような機能に対応するコントロールを登録できます。次の例に示すように、使用するコントロールの種類、連番、コントロール テンプレートまたはアセンブリの URL を指定します。
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
<Control
Id="SmallSearchInputBox"
Sequence="100"
Url="/templates/mysearchcontrol.ascx"/>
</Elements>
下位の連番を指定するので、前のコントロールが次のコントロールに置き換えられます。
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
<Control
Id="SmallSearchInputBox"
Sequence="50"
ControlClass="MySearchControl"
ControlAssembly="MyAssembly"/>
</Elements>
DelegateControl は SharePoint Foundation ページに埋め込まれており、次の情報に基づいた動作を実行します。
<SharePoint:DelegateControl ControlId="SmallSearchInputBox"/>
実行時には、サーバー ファーム、Web アプリケーション、サイト コレクション、Web サイトの各レベルで宣言された一連のコントロール要素がこの要素に受け入れられます。連番が最も小さいコントロールが DelegateControl によってコントロール ツリーに追加されます。最も小さい連番が重複している場合、コントロールの順序はランダムに決定されます。
DelegateControl の連番を使用して、SharePoint Foundation のポータル検索機能を統合することができます。既定の検索コントロールの連番は 100 ですが、ポータル検索の場合は、たとえば連番が 50 のサイト コントロール レベルでアクティブ化することができます。SharePoint Foundation ではこのようにして、検索コントロールが起動されるすべての場所で既定の検索コントロールをポータル検索コントロールに置き換えます。
たとえば、次に示すのは SmallSearchInputBox 委任コントロールです。
<SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBox"/>
このコントロールを使用して、次のようにカスタム コントロールの候補をインスタンス化するとします。
<MySearch:SuperSearchControl/>
親の委任コントロールは、カスタム コントロールのプロパティを設定します。DelegateControl 内で Property 要素を使用し、リフレクションを使って、関連付けられているカスタム コントロールのプロパティを設定します。
注意
AllowMultipleControls プロパティを true に設定すると、一致するすべての候補コントロールが、Sequence 属性で指定された順序に従って、委任コントロールの子としてページに追加されます。
委任コントロールは内部でインスタンス化される実際のコントロールを認識しないため、本質的に指定可能ではありません。委任コントロールで可能なのは、特定のインスタンスに対して、選択されたコントロールのデザインタイム HTML をレンダリングすることまでです。作成者は、コントロールを "ハードコード" するオプションを提供することはできます。つまり、フィーチャー インフラストラクチャによって返された現在のコントロールによって、SharePoint:DelegateControl を置き換えるというオプションです。開発者はこのコントロールをカスタマイズすることができます。
適用範囲 :
ファーム : はい
Web アプリケーション : はい
サイト コレクション : はい
Web サイト : はい