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 ASP.NET の既定のサイト マップ プロバイダーである XmlSiteMapProvider クラスは、クラスが保持するさまざまなコレクションのキーとして SiteMapNode の URL を使用します。したがって、ノードが URL を提供する場合、それはサイト マップ プロバイダーの範囲内で一意である必要があります。URL が指定されていない場合は、SiteMapNode を識別するために一意の識別子が生成されます。

于 2013-01-25T16:35:26.043 に答える