实现所需输出的最佳方法是忽略 SitePath 控件,而是使用 SiteMap 的 SiteMapNode 集合。服务器将 web.sitemap 解析为 SiteMapNodes 的集合,并通过查找与当前页面的 URL 匹配的节点来连接 SiteMap.CurrentNode。每个 SiteMapNode 都有一个 ParentNode 属性。这是 MSDN 上的参考页面。
因此,您需要做的就是检查 CurrentNode 是否有父节点,如果有,则将 ParentNode 的标题添加到 CurrentNode 的标题并继续前进,直到到达 RootNode(您将公司名称替换为根节点的标题)。
以下是一个快速解决方案;如果您正在使用它,它可以进入 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;
}
希望有帮助...