【问题标题】:Sitemap url with query string asp.net 4.0带有查询字符串 asp.net 4.0 的站点地图 url
【发布时间】: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


    【解决方案1】:

    这可能有点棘手,尤其是如果您不使用相对 url。我建议总是尝试使用“~”符号。也始终使用this.ResolveUrl("~/page1.aspx"); 解析网址如果您发布您的站点地图和一些代码,我们将能够为您提供更多帮助。祝你好运!

    【讨论】:

    • 我相应地更新了我的问题,请仔细阅读。如果可能的话,给我最好的主意,让查询字符串与站点地图链接保持一致。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 2017-05-17
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多