【发布时间】:2011-11-22 18:37:17
【问题描述】:
我面临一个关于使用站点地图 url 持久化查询字符串附加的大问题
假设我有三页
主页 > page1 > page2
我有一个链接将我重定向到 page1,查询字符串如 id=1
第1页
我知道如何在当前站点地图链接中附加查询字符串
我在 page1 中有另一个链接,可以像访问 page2 一样
第1页
当我在 page2 并且当我将鼠标悬停在 page2 的站点地图链接上时,它会显示带有查询字符串的正确 url,但如果我将鼠标悬停在 page1 的站点地图链接上,那么 page1 链接不会显示查询字符串。
这是我的问题。我只是无法使用站点地图链接保留查询字符串。仅将查询字符串附加到当前链接。
所以请告诉我如何为不同的不同站点地图链接保留所有查询字符串。如果我的问题不清楚,请问我。
我正在寻找解决方案。谢谢
编辑部分
我有 3 个 aspx 文件,一个 index.aspx、part1.aspx 和 part2.aspx。 我的站点地图控件存在于用户控件中,并且用户控件已添加到所有三个 aspx 页面中。
这是我的站点地图文件
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/default.aspx" title="Home" description="The WebSite's Home Page"> </siteMapNode>
<siteMapNode url="~/part1.aspx" title="part1" description="part1"></siteMapNode>
<siteMapNode url="~/part2.aspx" title="part2" description="part2"></siteMapNode>
以及我使用类似代码的站点地图超链接附加查询字符串的方式
SiteMapNode SmartSiteMapProvider_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
string QryString = new Uri(HttpContext.Current.Request.Url.AbsoluteUri).Query;
if ((SiteMap.CurrentNode == null)) return null;
XmlSiteMapProvider @this = new XmlSiteMapProvider();
SiteMapNode temp;
temp = SiteMap.CurrentNode.Clone(true);
//Uri u = new Uri(e.Context.Request.Url.ToString());
SiteMapNode tempNode = temp;
while (tempNode != null)
{
if (QryString!="")
{
if (tempNode != null)
{
tempNode.Url += QryString;
}
}
tempNode = tempNode.ParentNode;
}
return temp;
}
实际上,我希望 questring 应该与站点地图链接保持一致。 假设我在索引页面并转到第 1 部分页面单击索引页面中的链接,例如 第 1 部分/a>。第 1 部分站点地图链接显示查询字符串。 当我转到第 2 部分页面时,单击第 1 部分页面中的链接,例如 第 2 部分/a>。然后第 2 部分页面站点地图链接显示查询字符串,但是当我将鼠标悬停在第 2 部分页面的第 1 部分站点地图链接上时,第 1 部分链接没有用查询字符串装饰,这是我关心的问题。当我将查询字符串附加到当前链接时,为什么以前的站点地图链接丢失了查询字符串...查询字符串应该与所有站点地图链接保持完整。
请帮助我。谢谢
【问题讨论】:
标签: asp.net