Asp.net sharepoint 2010无法在代码中获取全局导航节点
我有sharepoint网站,我想读入代码全局导航信息 在“属性”页上: /_布局/区域导航设置.aspx 我添加了“位置”、“组织”、“98”节点 但当我试图在代码中获取这些节点时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()) {
using (var site = new Microsoft.SharePoint.SPSite(URL))
{
using (var currentWeb = site.OpenWeb())
{
return currentWeb.Navigation.GlobalNodes;
}
}
我始终使用这些节点:
- 家
- 快速启动
- 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有什么帮助?