【问题标题】:How to access List from Sub Site in SharePoint 2010如何从 SharePoint 2010 中的子网站访问列表
【发布时间】:2013-06-25 13:53:11
【问题描述】:

我创建了一个名为 Application Test 的站点。在这个站点中,我再次创建了一个名为 Sub Application 的子站点。

我在 Visual Studio 项目中添加站点 url "http://SP2010:2222/" 项目范围是现场。 现在,当我尝试从子站点(Sub Application)访问列表(TestList)时,它会给出错误列表不存在。 以下代码访问列表(TestList):

using (SPSite sites = new SPSite(SPContext.Current.Site.Url))
        {
            using (SPWeb web = sites.OpenWeb())
            {
              SPList CurrentList = web.Lists["TestList"]; // Error comes here
            }
        }

有人有解决办法吗?

【问题讨论】:

    标签: sharepoint sharepoint-2010


    【解决方案1】:

    试试这个,

    using (SPSite sites = new SPSite(SPContext.Current.Site.Url))
     {
        using (SPWeb web = sites.OpenWeb())
           {
              SPWebCollection subsites= web.GetSubwebsForCurrentUser(); //get subsites
               for (int i= 0; i< subsites.Count; i++)
                  {
                    SPWeb subSiteWeb= subsites[i];
    
                       SPList CurrentList = subSiteWeb.Lists["TestList"];
                       if (CurrentList != null)
                       break;       
                   }                  
            }
     }
    

    【讨论】:

    • 这会起作用,但你不应该这样做。想象一下有 500 个子网站 :-)
    • 在这种情况下,您必须在创建 SPSite 实例时指定子站点的 url。
    • 它的工作,但我没有具体的网址。此页面从命令操作重定向
    • @Vikalp [如果我为子网站创建子网站,它的工作原理?] 你这是什么意思?
    • 这意味着如果层次结构是这样的,那么它的工作原理是什么? "SP2010:2222/Application/Sub_Application/SubSite"
    【解决方案2】:

    SPContext.Current.Site 是您将 thing 部署到的当前站点 - 不管它是什么。但是,当您在不带任何参数的情况下执行 sites.OpenWeb() 时,会打开 RootWeb,如果根网站没有您的列表,您将不会在那里找到它。

    尝试使用各自的 URL 明确打开 Web 和站点,例如http://SP2010:2222/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-17
      • 2016-09-18
      • 2011-06-29
      • 2021-07-31
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多