Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net sharepoint 2010无法在代码中获取全局导航节点_Asp.net_Sharepoint_Sharepoint 2010 - Fatal编程技术网

Asp.net sharepoint 2010无法在代码中获取全局导航节点

Asp.net sharepoint 2010无法在代码中获取全局导航节点,asp.net,sharepoint,sharepoint-2010,Asp.net,Sharepoint,Sharepoint 2010,我有sharepoint网站,我想读入代码全局导航信息 在“属性”页上: /_布局/区域导航设置.aspx 我添加了“位置”、“组织”、“98”节点 但当我试图在代码中获取这些节点时 using (var site = new Microsoft.SharePoint.SPSite(URL)) { using (var currentWeb = site.OpenWeb()) {

我有sharepoint网站,我想读入代码全局导航信息

在“属性”页上:

/_布局/区域导航设置.aspx 我添加了“位置”、“组织”、“98”节点

但当我试图在代码中获取这些节点时

  using (var site  = new Microsoft.SharePoint.SPSite(URL))
            {
                using (var currentWeb = site.OpenWeb())
                {
               return currentWeb.Navigation.GlobalNodes;

            }
}

我始终使用这些节点:

  • 快速启动
  • SharePoint顶部导航栏

为什么我有这些奇怪的节点以及如何获得真正的全局导航/?

SharePoint的导航是分层的。层次结构正好有三个节点:

  • 主页-表示左上角的单个“主页”图标
  • 快速启动-表示页面左侧的快速启动菜单
  • 顶部导航栏-表示页面顶部的导航栏
您必须深入研究这些节点的子节点才能找到三个节点-请参见属性。SharePoint缺少导航节点的唯一标识符,因此您必须依赖标题(显示名称)



更新:另外请注意,您的代码包含严重的设计缺陷。您返回的对象逻辑上嵌套在
SPWeb
中,超出了
SPWeb
实例处于活动状态的范围,即使用
语句超出
。虽然这可能适用于导航节点,但这种行为通常会导致错误。这些错误通常由SharePoint内部处理,并“仅”导致记录的错误消息,但这正是您的代码应该产生的结果。

SharePoint的导航是分层的。层次结构正好有三个节点:

  • 主页-表示左上角的单个“主页”图标
  • 快速启动-表示页面左侧的快速启动菜单
  • 顶部导航栏-表示页面顶部的导航栏
您必须深入研究这些节点的子节点才能找到三个节点-请参见属性。SharePoint缺少导航节点的唯一标识符,因此您必须依赖标题(显示名称)


更新:另外请注意,您的代码包含严重的设计缺陷。您返回的对象逻辑上嵌套在
SPWeb
中,超出了
SPWeb
实例处于活动状态的范围,即使用
语句超出
。虽然这可能适用于导航节点,但这种行为通常会导致错误。这些错误通常由SharePoint内部处理,并“仅”在记录的错误消息中产生,但这正是您的代码应该产生的结果。

这对我很有用:

var pubWeb = PublishingWeb.GetPublishingWeb(web);
foreach (SPNavigationNode navigationNode in pubWeb.Navigation.GlobalNavigationNodes)
{
   //do stuff
}
这对我很有用:

var pubWeb = PublishingWeb.GetPublishingWeb(web);
foreach (SPNavigationNode navigationNode in pubWeb.Navigation.GlobalNavigationNodes)
{
   //do stuff
}

我的链接显示在那里,但仅与其他链接一起显示。我也可以从PublishingWeb.GetPublishingWeb(currentWeb.Navigation.GlobalNavigation)获取链接,但是那里有很多垃圾!!!我没有补充。如何知道哪些链接来自“全球导航”类别,哪些sharepoint刚刚添加?哪些是“垃圾”?如果您以编程方式添加导航节点,则可以在节点的属性包中添加一个自定义属性,以保留一些唯一的ID.trash。我的意思是,在sharepoint中,我只看到“位置”、“组织”和“98”节点,但在代码中,我有12-13或更多!因为真正的垃圾被拿来了。这就是我讨厌sharepoint的原因!)我已经发现我可以按类型筛选项目。所以我只会得到我需要的节点。很快将发布部分代码。我的链接将显示在那里,但仅与其他链接一起显示。我也可以从PublishingWeb.GetPublishingWeb(currentWeb.Navigation.GlobalNavigation)获取链接,但是那里有很多垃圾!!!我没有补充。如何知道哪些链接来自“全球导航”类别,哪些sharepoint刚刚添加?哪些是“垃圾”?如果您以编程方式添加导航节点,则可以在节点的属性包中添加一个自定义属性,以保留一些唯一的ID.trash。我的意思是,在sharepoint中,我只看到“位置”、“组织”和“98”节点,但在代码中,我有12-13或更多!因为真正的垃圾被拿来了。这就是我讨厌sharepoint的原因!)我已经发现我可以按类型筛选项目。所以我只会得到我需要的节点。很快就会发布部分代码。这对OP有什么帮助?这对OP有什么帮助?