मैंने हाल ही में MvcSiteMapProvider का उपयोग करने का प्रयास कर एक सड़क ब्लॉक मारा है।एकाधिक MvcSiteMaps का उपयोग
मेरे आवेदन में, मेरे पास तीन अलग-अलग क्षेत्र हैं: लैंडिंग, एप्लिकेशन और प्रशासन। मैंने वर्तमान में एमवीसीसाइटमैपप्रोवाइडर को कार्यान्वित किया है और यह आश्चर्यजनक रूप से काम करता है, लेकिन मैं अब क्या करने की कोशिश कर रहा हूं - एचटीएमएल एमवीसीसाइटमैप हेल्पर का उपयोग करें और उस क्षेत्र के आधार पर एक अलग नक्शा प्रदाता निर्दिष्ट करें।
तो, कब मैं हूं:
- "व्यवस्थापक" क्षेत्र में - मैं "AdminSiteMapProvider" नामक प्रदाता का उपयोग करना चाहता हूं।
- "एप्लिकेशन" क्षेत्र में - मैं "AppSiteMapProvider" नामक प्रदाता का उपयोग करना चाहता हूं।
मैं निम्नलिखित की कोशिश की है:
साझा -> _AppLayout.cshtml
@Html.Partial("_Menu")
साझा -> _Menu.cshtml
@{
if (HttpContext.Current != null && HttpContext.Current.Handler is System.Web.Mvc.MvcHandler)
{
var handler = HttpContext.Current.Handler as System.Web.Mvc.MvcHandler;
var currentArea = handler.RequestContext.RouteData.Values["area"] ?? string.Empty;
if (!string.IsNullOrEmpty(currentArea.ToString()))
{
<text>@Html.MvcSiteMap("AppSiteMapProvider").Menu()</text>
}
else if (currentArea.ToString() == "Admin")
{
<text>@Html.MvcSiteMap("AdminSiteMapProvider").Menu()</text>
}
}
}
कोई सुझाव ? मैं सिर्फ एक क्षेत्र के लिए _AppLayout.cshtml सामग्री को नए मास्टर में कॉपी/पेस्ट नहीं करना चाहता हूं, बल्कि मैं इसे सही प्रदाता को गतिशील रूप से चुनना चाहता हूं।
कॉल कर सकते हैं आप mvcSiteMapNode के क्षेत्र विशेषता का उपयोग कर की कोशिश की? –
जो केवल जेनरेट किए गए लिंक को बदलता है (मैं वर्तमान में प्रशासन क्षेत्र के लिए "क्षेत्र" का उपयोग करता हूं)। मैं वर्तमान में "व्यवस्थापक" क्षेत्र में ब्राउज़ कर रहा हूं, इस पर निर्भर करता हूं कि मैं एक अलग फ़ाइल (admin.sitemap) में सचमुच लिंक का एक पूरी तरह से अलग सेट उत्पन्न करना चाहता हूं। – Kori