如何以编程方式确定哪些主页(自定义和OOTB)可用于SharePoint中的网站?
谢谢,MagicAndi
答案 0 :(得分:9)
我提出了这个解决方案,利用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)
{
}
答案 1 :(得分:-2)
使用反射并检查类型的基本类型是否等于
System.Web.UI.MasterPage
。
这就是:
foreach(Type t in Assembly.GetExecutingAssembly().GetTypes())
{
if (t.BaseType==typeof(MasterPage))
{
// do something, add to collection - whatever
}
}
但是,根据您的MasterPages定义的程序集,以及迭代特定程序集中所有类型的事实,它可能绝对不是最佳解决方案。
我对SharePoint很无知,但我认为这个解决方案更通用了。