如何使用FindSiteMapNodeFromKey(string)Asp.net?不工作

时间:2012-12-05 15:26:18

标签: asp.net sitemap

我需要在不同网页文件的很多地方检索一些特定的网址。所以我开始以XML格式构建站点地图。我不需要导航菜单或面包屑,只需通过resourcekey获取URL。不幸的是,到目前为止所有读数都只是解释了如何设置导航菜单。到目前为止我所尝试的只是让我犯错。

我需要这样的东西,(但是抛出:对象引用没有设置为对象的实例。而 Mynode1 总是 null ):

SiteMapNode MyNode1 = new SiteMapNode(MyXmlSiteMapProvider, "Product1");
HyperLink1.NavigateUrl = MyNode1.Url;

我也是这样做的:

 SiteMapNode MyNode1 = new SiteMapNode(MyXmlSiteMapProvider, "Product1");
    MyNode1= MyXmlSiteMapProvider.FindSiteMapNodeFromKey("Product1");
    HyperLink1.NavigateUrl = MyNode1.Url;

我还尝试使用NameValueCollection和providerAttributes来初始化MyXmlSiteMapProvider然后使用BuildSiteMap(),但结果相同。 (空白链接或错误)

我的站点地图如下所示(文件名为 web.sitemap

<?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="Homepage" resourceKey="home">
    <siteMapNode url="~/products/mainlist.aspx" title="List of products"  description="" resourceKey="listOfProducts" >
        <siteMapNode url="~/products/catA/someproduct.aspx" title="Product tittle"  description="" resourceKey="Product1"/>
    </siteMapNode>
  </siteMapNode>
</siteMap> 

我的Web.Config文件,有这个

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
      <providers>
        <add name="XmlSiteMapProvider"
          description="SiteMap provider that reads in .sitemap files."
          type="System.Web.XmlSiteMapProvider"
          siteMapFile="web.sitemap" />
      </providers>
    </siteMap>

提前感谢任何知道简单方法的人。

1 个答案:

答案 0 :(得分:0)

我和你一样有同样的问题。现在对我有意义。检查文件: http://msdn.microsoft.com/en-us/library/system.web.sitemapprovider.findsitemapnodefromkey.aspx

  

块引用   XmlSiteMapProvider类是ASP.NET的默认站点地图提供程序,它使用SiteMapNode的URL作为类维护的各种集合中的键。因此,如果节点提供URL,则它必须在站点地图提供程序的范围内是唯一的。如果未提供URL,则会生成唯一标识符以标识SiteMapNode。