0

我需要在很多不同的 web 文件的地方检索一些特定的 URL。所以我开始构建一个 XML 格式的站点地图。我不需要导航菜单或面包屑,只需通过资源键获取 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>

提前感谢任何知道一种简单方法来完成这项工作的人。

4

1 回答 1

0

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

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

于 2013-01-25T16:35:26.043 回答