我在sharepoint服务器2010中工作。我的要求是访问当前网站的所有列表。
在我的sharepoint服务器中,我有以下内容:1) 包含子站点的站点集合
例如:http://servername:portNo/SiteA/default.aspx其中SiteA是子网站。
2) WebApplication及其下的站点。
例如:http://servername:portNo/sites/ProjectA/default.aspx其中ProjectA是网络应用下的站点
现在我需要获得当前网站中的所有列表,我正在使用下面的代码
SPSite SiteCollection = SPContext.Current.Site;
SPWeb web = SiteCollection.AllWebs[CurrentSiteAddress];
List<SPList> listCollection = new List<SPList>();
SPListCollection **lists** = web.Lists;
当当前网站是一个网站集,即主网站及其子网站时,上述代码有效。然而,当我的当前网站是web应用程序下的网站时,代码会中断。
异常消息:没有名为"/sites/ProjectA\"的网站。"
但当调试以下代码时,
SPListCollection列出=web。列表;
列表集合未填充。但经过一段时间后,列表集合会被填充并正常工作。有人能告诉我这可能是什么原因吗?以及如何解决此问题?
试试这个:
string siteurl = SPContext.Current.Site.Url;
string weburl = SPContext.Current.Web.ServerRelativeUrl;
using (SPWeb safeWeb = new SPSite(siteurl).OpenWeb(weburl))
{
SPListCollection lists = web.Lists;
foreach (SPList list in lists)
{
//do whatever you want with your list(s)
}
}