我需要在不同网页文件的很多地方检索一些特定的网址。所以我开始以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>
提前感谢任何知道简单方法的人。
答案 0 :(得分:0)
我和你一样有同样的问题。现在对我有意义。检查文件: http://msdn.microsoft.com/en-us/library/system.web.sitemapprovider.findsitemapnodefromkey.aspx
块引用 XmlSiteMapProvider类是ASP.NET的默认站点地图提供程序,它使用SiteMapNode的URL作为类维护的各种集合中的键。因此,如果节点提供URL,则它必须在站点地图提供程序的范围内是唯一的。如果未提供URL,则会生成唯一标识符以标识SiteMapNode。