实现所需输出的最佳方法是忽略SitePath控件,而是使用SiteMap的SiteMapNode集合。服务器将web.sitemap解析为SiteMapNodes的集合,并通过查找与当前页面的URL匹配的节点来连接SiteMap.CurrentNode。每个SiteMapNode都有一个ParentNode属性。 Here is the reference page on MSDN。
所以,你需要做的是检查CurrentNode有父,如果它您添加ParentNode的标题为CurrentNode的标题,并保持下去,直到你到达根节点(你的根替换为您的公司名称节点的标题)。
下面是一个快速解决方案;如果你使用的话,它可以进入MasterPage。我不确定你的语言,但这应该很容易在VB.Net中重写。我给了它一个简单的测试,它似乎工作。 您可以自定义分隔页面标题的字符。
protected void Page_Load(object sender, EventArgs e)
{
Page.Title = SiteMapTitle(SiteMap.CurrentNode, "", " - ");
}
private string GetNodeTitle(SiteMapNode oNode)
{
if (oNode == SiteMap.RootNode)
return "Company Name";
else
return oNode.Title;
}
private string SiteMapTitle(SiteMapNode oNode, string szTitle, string szItemSeparator)
{
if (szTitle != string.Empty)
szTitle = szTitle + szItemSeparator + GetNodeTitle(oNode);
else
szTitle = GetNodeTitle(oNode);
if (oNode.ParentNode != null)
szTitle = SiteMapTitle(oNode.ParentNode, szTitle, szItemSeparator);
return szTitle;
}
希望帮助...
难道我的回答帮助解决问题了吗? – PhillFox 2011-02-25 15:46:57