参考Custom-built Top Navigation Menu for SharePoint 2010这编文章
主要注意的是以下控件的代码
public partial class SmoothNavMenu : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
SiteMapNode rootNode = GetSiteMapNodeOfCurrentWeb();
menuContentLiteral.Text = BuildMenuContent(rootNode);
}
private string BuildMenuContent(SiteMapNode rootNode)
{
string script = "<ul>";
foreach (SiteMapNode node in rootNode.ChildNodes)
{
if (node.ChildNodes.Count > 0)
{
script = script + string.Format("<li><a href=\"#\">{0}</a>", node.Title);
script = script + BuildMenuContent(node);
script = script + "</li>";
}
else
script = script + string.Format("<li><a href=\"{0}\">{1}</a></li>", node.Url, node.Title);
}
script = script + "</ul>";
return script;
}
private SiteMapNode GetSiteMapNodeOfCurrentWeb()
{
SiteMapProvider smpr = PortalSiteMapProvider.CombinedNavSiteMapProvider;
SiteMapNode rootNode = smpr.RootNode;
return rootNode;
}
}