سؤال

لدي صفحة معينة (سنسميها MyPage) يمكن الوصول إليها من خلال ثلاث صفحات مختلفة.في ملف Web.sitemap، حاولت حشو ملف XML لهذه الصفحة ضمن العقد الثلاث المنفصلة مثل هذا:

< الصفحة 1 >
< صفحتي / >
  ...
< /الصفحة 1>

< الصفحة 2 >
< صفحتي / >
  ...
< /الصفحة 2>

< الصفحة 3 >
< صفحتي / >
  ...
< /الصفحة 3>

أثناء القيام بذلك تلقيت الخطأ التالي:

تم العثور على عقد متعددة بنفس عنوان URL "Default.aspx".يتطلب XmlSiteMapProvider أن تحتوي عقد خريطة الموقع على عناوين URL فريدة.

قرأت عبر الإنترنت أنه يتم تخزين SiteMapNodes كقاموس داخليًا وهو ما يفسر سبب عدم تمكني من استخدام نفس عنوان URL.على أية حال، أنا فقط أبحث عن طرق بديلة لحل هذه المشكلة.فإن أي اقتراحات موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

وهذا ليس حقًا الغرض المقصود من ملف Web.sitemap.

من مستندات MSDN لفئة SiteMap,

في الأساس ، يعد Sitemap حاوية لمجموعة هرمية من كائنات sitemapnode.ومع ذلك ، فإن خريطة sitemap لا تحافظ على العلاقات بين العقد ؛بدلاً من ذلك ، فإنه ينفي هذا إلى مزودي خريطة الموقع.

لذلك، لإعادة الصياغة، يصف web.SiteMap فقط تَسَلسُل من الصفحات، وليس من العلاقات بين تلك الصفحات.

ومع ذلك، إذا كانت نيتك هي ربط "MyPage" من صفحاتك الأخرى فقط، فلن تحتاج إلى أن تكون MyPage بمثابة عقد فرعية لتلك الصفحات الأخرى على أي حال.

نأمل أن يساعد ذلك في توضيح الأمور قليلاً.

نصائح أخرى

أعلم أنه يمكن أن يكون لديك إدخالان مختلفان لـ ~/folder/index.aspx و ~/folder/ كلاهما يشيران إلى نفس المكان.قليل من الاختراق، نعم، ولكن ربما هناك طريقة يمكنك من خلالها المضي قدمًا في هذا؟

  • ~/folder/index.aspx
  • ~/مجلد/
  • ~/folder

يمكنك تجربة هذا...

<siteMapNode url="ListAll.aspx">
  <siteMapNode url ="Detail.aspx?node=all" />
</siteMapNode>
<siteMapNode url="ListMine.aspx">
  <siteMapNode url ="Detail.aspx?node=mine" />
</siteMapNode>

ولكن يتعطل إذا حاولت الانتقال إلى "Detail.aspx?node=all&id=13" (وهو ما ما زلت أحاول حله.)

إحدى الطرق البسيطة والفعالة هي التمييز باستخدام سلسلة استعلام مختلفة:

  • default.aspx?page=1
  • default.aspx?page=2
  • default.aspx?page=3

وتختلف جميعها في خريطة الموقع، على الرغم من أنها تشير جميعها إلى نفس الصفحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top