具有重复网址和查询字符串值的网站地图

时间:2013-05-20 18:16:40

标签: asp.net

我们在website.sitemap文件中有以下内容

  <siteMapNode url="~/admin/NewSub.aspx" title="New Subs" >
    <siteMapNode url="~/admin/Request.aspx" title="Request Details"  queryStringToInclude="rid">
      <siteMapNode url="~/admin/Preview.aspx" title="Preview"   queryStringToInclude="rid"/>
      <siteMapNode url="~/admin/EditRequest.aspx" title="Edit Request"  queryStringToInclude="rid"/>
    </siteMapNode>
  </siteMapNode>
  <siteMapNode url="~/admin/Notices.aspx" title="Notices">
    <siteMapNode url="~/admin/RequestDetails.aspx" title="Request Details"  queryStringToInclude="rid">
    </siteMapNode>
  </siteMapNode>

我需要两次包含RequestDetail.aspx,因为有两种方法可以访问同一页面,但这样做会导致重复错误,不能在不同的节点中使用相同的URL。所以我更新了第二个是url =“〜/ admin / RequestDetails.aspx?id = 1”和queryStringToInclude =“id,rid”

我们正在使用CustomProvider,因为我们需要查询字符串附加到站点地图中的值。有没有办法得到它,以便在SmartSiteMapProvider_SiteMapResolve方法中代码将知道要选择哪一个。我们最初有:

  

SiteMapNode temp = null;       temp = SiteMap.Providers [“SiteMap”]。CurrentNode.Clone(true);

但是这总是会导致“New Subs”成为currentnode,我更新了代码以包含以下检查:

        if (HttpContext.Current.Request.QueryString["id"] != null)
        {
            temp = SiteMap.Providers["SiteMap"].FindSiteMapNodeFromKey("/testapp/admin/requestdetails.aspx?id=1").Clone(true);
        }

这似乎有效,但它对该特定网址的检查进行了硬编码,有更好的方法吗?

0 个答案:

没有答案