是否可以按整个网站集中的内容类型获取所有文件?这是我目前的代码:
//Get list of subsites to traverse
List<string> subsites = getSubSiteList();
foreach (string siteUrl in subsites)
{
using (SPWeb web = new SPSite(siteUrl).OpenWeb())
{
if (web.GetFolder("Pages").Exists)
{
//Get Pages Folder from subsite
SPFolder folderCol = web.Folders["Pages"];
//Set files in Pages folder
SPFileCollection fileCol = folderCol.Files;
foreach (SPFile file in fileCol)
{
//Debug.WriteLine("File in site: " + siteUrl + " file: " + file.Name);
}
}
web.Dispose();
}
}
在这段代码中,我遍历所有子网站并转到“Pages”文件夹以获取某个页面,但我希望能够只需提取所有这些文件,而无需遍历每个子网站,并获取它通过内容类型而不是进入“Pages”文件夹并从那里解析。代码怎么样?谢谢!
答案 0 :(得分:3)
您要找的是site data query。
其他选项是以编程方式利用搜索功能,但我不认为它与选项一样好;网站数据查询就是为此而设计的。
答案 1 :(得分:0)
你可以尝试这样的东西来获取所有网站以及子网站 请参阅此MSDN站点以获取可以使用的不同选项的列表。 How to: Enumerate Sites and Site Collections
SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsite = oSiteCollection.AllWebs;
for (int i = 0; i < collWebsite.Count; i++)
{
using (SPWeb oWebsite = collWebsite[i])
{
SPListCollection collList = oWebsite.Lists;
for (int j = 0; j < collList.Count; j++)
{
Label1.Text += SPEncode.HtmlEncode(collWebsite[i].Title) + " "
+ SPEncode.HtmlEncode(collList[j].Title) + "<BR>";
}
}