我有一个如下的网站:
--站点A
-Subsite1
-Subsite2
现在,每当我试图访问QuickLaunch属性时,它总是空的。
SPNavigation nav = spWeb.Navigation;
if (nav.QuickLaunch.Count == 0)
{
// ALWAYS TRUE
}但是,如果我进入SiteA的导航设置(通过UI)并重新排序列表中的任何站点,只有到那时QuickLanuch才可用。(其他设置保留为默认设置)
有人能解释这种行为吗?我真的需要访问QuickLaunch项目。
谢谢
发布于 2015-09-01 16:45:20
如果在网站正在执行created.Below代码时访问quicklaunch,则会发生此错误。这会导致功能激活的代码等待网站集创建完成后再执行。
using System.Threading;
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
//Queues changes until after site exists. For use in provisioning.
SPWeb web = properties.Feature.Parent as SPWeb;
ThreadPool.QueueUserWorkItem(ApplyYourChanges, web.Url);
}
private void ApplyYourChanges(object state)
{
string webUrl = state as string;
Uri uri = new Uri(webUrl);
// additional conditions here -- perhaps check if a feature was activated
while (!SPSite.Exists(uri))
{
Thread.Sleep(5000);
}
using (SPSite site = new SPSite(webUrl))
{
using (SPWeb web = site.OpenWeb())
{
//configure the quicklaunch menu
configureQuickLaunch(web);
}
}
}
public static void configureQuickLaunch(SPWeb spWeb)
{
SPNavigationNodeCollection nodeCollection = spWeb.Navigation.QuickLaunch;
SPNavigationNode heading = nodeCollection.Cast<SPNavigationNode>().FirstOrDefault(n => n.Title == headingNode);
SPNavigationNode item = heading.Children.Cast<SPNavigationNode>().FirstOrDefault(n => n.Url == url);
if(item == null)
{
item = new SPNavigationNode(nodeName, url);
item = heading.Children.AddAsLast(item);
}
}发布于 2009-03-24 14:26:57
我似乎记得在某处读到过QuickLaunch集合只存储默认顺序的定制。环顾四周,我找不到可以向您展示的文档,但它可以解释您看到的行为。
因此,您的QuickLaunch.Count == 0只是确认项目的默认排序已就绪。你仍然可以添加节点,如果这样做有帮助的话;
SPNavigationNodeCollection nodes = web.Navigation.QuickLaunch;
SPNavigationNode node = new SPNavigationNode("Node Name", "Node URL", true);
nodes.AddAsFirst(node);发布于 2009-03-24 15:27:30
我认为,默认情况下,QuickLaunch使用共享导航。换句话说,子站点的QuickLaunch在您使用它之前没有自己的节点集合。如果您对站点进行重新排序,则会为其提供自己唯一的一组节点。
如果您希望以编程方式将QuickLaunch设置为具有自己的节点集,则应该能够这样做:
SPNavigation nav = spWeb.Navigation;
nav.UseShared = false;
spWeb.Update(); 我认为此时您的计数应该不是零。
https://stackoverflow.com/questions/676155
复制相似问题