我现在困住这个问题近一天了: 在应用程序中,我在代码中创建了一个发布页面:
PublishingPage newPage = pages.Add(usableName, layout);
newPage.ListItem["Title"] = promoRecord.PromotionName;
newPage.ListItem["Description"] = string.Empty;
newPage.Update();
newPage.CheckIn("First draft");
到目前为止一切顺利。问题是,我需要新创建的页面出现在导航的顶部。我很天真,想到像这样简单的事情:
SPNavigationNodeCollection navigationNodes = pWeb.CurrentNavigationNodes;
SPNavigationNode newNode = null;
foreach (SPNavigationNode node in navigationNodes)
{
if (node.Url.Equals(prefix + newPage.Url, StringComparison.OrdinalIgnoreCase))
{
newNode = node;
}
}
newNode.MoveToFirst(navigationNodes);
会奏效。它没有,因为页面根本就不存在(在CurrentNavigationNodes集合中)。 所以我尝试了:
newNode = new SPNavigationNode(promoRecord.PromotionName, prefix + newPage.Url);
navigationNodes.AddAsFirst(newNode);
没有运气 - 这里我有一个例外,说我无法添加页面,因为它处于DRAFT状态。实际上,当我进入前端管理(管理内容和结构/站点管理/导航)时,CurrentNavigation似乎得到了更新 - 页面出现在那里。即使它处于DRAFT模式。
我尝试了许多没有成功的事情......也许你们知道我能尝试什么?
提前多多感谢!