我有一个页面 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
干杯