我正试图在网络下遍历这些网的所有网和子网。
我的家长网
http://EXAMPLE.com/parentweb(这是一个子网站而不是根网站)
子网 http://example.com/parentweb/subweb(这是可能有或没有子网的子网之一)我唯一尝试的是进入网站集并循环遍历所有网站,这是一个更长的过程,因为我知道唯一需要检查的子网站。我的网站集有多个子网站。我不想遍历所有子网站。
此代码有效,但需要花费大量时间,并且遍历所有不需要检查的子网站
using(SPSite site = new SPSite(“http://myserver/mysitecol”)
{
foreach(SPWeb web in site.AllWebs)
{
}
}
答案 0 :(得分:2)
您可以使用.Webs
对象的SPWeb
属性来访问其直接子子网站。
using(SPSite site = new SPSite("http://myserver/mysitecol")
{
using(SPWeb parentweb = site.OpenWeb("subweb/subweb")
{
foreach(SPWeb web in parentweb.Webs)
{
}
}
}
要访问Web下面的所有(包括间接)子孙网站,您可以在每个直接后代上递归访问该.Webs
属性,但是从它开始可以更直接.AllWebs
网站集对象的SPSite
属性。
.WebsInfo
返回的SPWebCollection的.AllWebs
属性为您提供了List<>
个轻量级SPWebInfo
对象。您可以使用此轻量级集合来获取您关注的Web的筛选列表,而无需实例化和处理集合中的任何其他SPWeb。
string webUrl = "/mysitecol/subweb/subweb";
using(SPSite site = new SPSite("http://myserver/mysitecol")
{
List<SPWebInfo> websInfo = site.AllWebs.WebsInfo.FindAll(
delegate(WebsInfo webInfo)
{
// filter to get us only the webs that start with our desired URL
return webInfo.ServerRelativeUrl.StartsWith(webUrl);
}
);
foreach(SPWebInfo webInfo in websInfo)
{
using(SPWeb web = site.OpenWeb(webInfo.Id))
{
}
}
}