首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SiteMapPath创建动态页面标题?

使用SiteMapPath创建动态页面标题?
EN

Stack Overflow用户
提问于 2011-02-19 01:55:38
回答 1查看 2.8K关注 0票数 0

我目前使用SiteMapPath为我的ASP.net 3.5 (vb.net)页面生成一个面包屑,效果非常好。

现在,我正在尝试弄清楚如何使用相同的控件来构建动态页面标题(在标记中)。我想要一个反向路径列出,但SiteMapPath控件包括链接和一堆样式跨度。有没有办法去掉所有这些,只得到一个带有分隔符的简单路径?

例如,假设我们在我的网站的“关于”部分的“新闻发布”页面上。

面包屑显示为:

主页>关于>新闻稿

我希望页面标题为:

新闻发布-关于-公司名称

所以我需要它来颠倒顺序,删除所有跨度,链接和样式(因为这是在标签内),并删除根节点“家”,然后添加公司名称的结尾。由于我的菜单导航和面包都是从站点地图文件驱动的,所以我认为尝试让标题做同样的事情是有意义的。

有什么想法吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-02-19 03:42:35

实现所需输出的最佳方法是忽略SitePath控件,而使用SiteMapNode的SiteMapNode集合。服务器将web.sitemap解析为一个SiteMapNodes集合,并通过查找与当前页面的SiteMap.CurrentNode匹配的节点来连接URL。每个SiteMapNode都有一个ParentNode属性。Here is the reference page on MSDN

因此,您需要做的就是检查CurrentNode是否有父节点,如果有,则将父节点的标题添加到CurrentNode的标题中,然后继续前进,直到到达RootNode (在该all中,您用公司名称替换根节点的标题)。

下面是一个快速的解决方案;如果你正在使用它,它可以放在MasterPage中。我不确定您的语言,但这应该很容易用VB.Net重写。我对它进行了简单的测试,它似乎起作用了。您可以自定义分隔页面标题的字符。

代码语言:javascript
复制
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;
}

希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5044799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档