SharePoint の Web サイトで使用できるマスター ページ (カスタムおよび OOTB) をプログラムで特定するにはどうすればよいですか?
ありがとう、マジックアンディ
SharePoint の Web サイトで使用できるマスター ページ (カスタムおよび OOTB) をプログラムで特定するにはどうすればよいですか?
ありがとう、マジックアンディ
私は、SPQuery オブジェクトを使用してチーム サイト コレクションのマスター ページ ギャラリー リストをクエリする、このソリューションを思い付きました。
try
{
using (SPSite site = new SPSite(this.ParentSiteUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList myList = web.Lists["Master Page Gallery"];
SPQuery oQuery = new SPQuery();
oQuery.Query = string.Format("<Where><Contains><FieldRef Name=\"FileLeafRef\" /><Value Type=\"File\">.master</Value></Contains></Where><OrderBy><FieldRef Name=\"FileLeafRef\" /></OrderBy>");
SPListItemCollection colListItems = myList.GetItems(oQuery);
foreach (SPListItem currentItem in colListItems)
{
// Process master pages
}
}
}
}
catch (Exception ex)
{
}
リフレクションを使用して、型の基本型が等しいかどうかを確認します
System.Web.UI.MasterPage
.
したがって、次のようなものがあります。
foreach(Type t in Assembly.GetExecutingAssembly().GetTypes())
{
if (t.BaseType==typeof(MasterPage))
{
// do something, add to collection - whatever
}
}
ただし、MasterPages が定義されているアセンブリと、特定のアセンブリ内のすべての型を反復処理するという事実によっては、これが最適なソリューションではない可能性があります。
私は幸いなことに SharePoint について無知ですが、このソリューションはやや一般的だと思います。