2

我有一个页面 A 和页面 B 的网站

页面 B 在页面 A 上有一个链接

Page B实际上是Page C的一个子子网。

现在我正在尝试对自定义用户控件的面包屑导航进行更改。

ATM 我正在​​尝试检查用户是否从页面 A 导航到页面 B,然后创建此导航,如果从某处导航,则构建不同的导航。通过使用这个属性,我知道用户来自哪里

Request.UrlReferrer.ToString()

好的现在问题是我想构建或获取用户从中导航的页面/网络的站点地图,以便我可以将此页面 B 标题添加到该面包屑导航,如下所示,

页面 A > 页面 B

或者它可以是

页 C > 页 C.1 > 页 C.2 > 页 B

我正在使用的代码是这样的,

        string defaultBreadcrumbHtml = "<SPAN><a class=\"ms-sitemapdirectional\" href=\"{0}\">{1}</a></SPAN>";
    string defaultSpacingHtml = "<SPAN> > </SPAN>";


    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SiteMapProvider contentMapProvider = SiteMap.Providers["SPContentMapProvider"];
            StringBuilder generatedHTML = new StringBuilder();
            generatedHTML.Append("<div class=\"ms-globallinks TopBreadcrumbs\">");


            if (contentMapProvider != null)
            {
                SiteMapNode currentNode = contentMapProvider.FindSiteMapNode(Request.UrlReferrer.ToString());

                if (currentNode != null)
                {

                    string[] breadcrumbTitles = new string[20]; ;
                    string[] breadcrumbUrls = new string[20];
                    int count = 0;

                    if (currentNode == contentMapProvider.RootNode)
                    {
                        breadcrumbTitles[0] = currentNode.Title;
                        breadcrumbUrls[0] = currentNode.Url;
                    }
                    else
                    {
                        while (currentNode != contentMapProvider.RootNode)
                        {
                            if (Request.UrlReferrer.ToString().Contains("PageA"))
                            {
                                breadcrumbTitles[count] = "Page B";
                                breadcrumbUrls[count] = string.Format("www.Gohome.com\PageB.aspx");
                                count++;
                            }

                            breadcrumbTitles[count] = currentNode.Title;
                            breadcrumbUrls[count] = currentNode.Url;

                            if (currentNode.ParentNode != null)
                            {
                                currentNode = currentNode.ParentNode;
                                count++;
                            }
                            else
                            {
                                break;
                            }

                        }

                        breadcrumbTitles[count] = currentNode.Title;
                        breadcrumbUrls[count] = currentNode.Url;
                    }

                    while (count >= 0)
                    {
                        generatedHTML.Append(string.Format(defaultBreadcrumbHtml, breadcrumbUrls[count], breadcrumbTitles[count]));
                        if (count != 0)
                        {
                            generatedHTML.Append(defaultSpacingHtml);
                        }
                        count--;
                    }

                    generatedHTML.Append("</div>");

                    html.Text = generatedHTML.ToString();
                }
            }

但它不能正常工作,我试图调试它,但因为我无法获得我来自的网页/页面的站点地图,我无法获得站点地图。所以我的问题是,我怎样才能获得我从中导航的网站的站点地图,以便我将另一个节点添加到它作为“siteicame from > ..> Page B”

要获取当前页面的站点地图,我可以使用它,但我不想使用它,因为它会将站点地图作为站点 C > 站点 C.1 ... > 站点 B

干杯

4

1 回答 1

1

实现面包屑导航...无需后面的代码。

你可以通过

1) Web.SiteMap 2) ASPX 页面的标签

如果你想...我会告诉你示例代码...?

于 2012-07-10T09:09:46.330 回答