से लिंक करना होगा, मैं Maartenba के MvcSiteMapProvider v.3.2.1 स्थापित किया है और मैं एक बहुत ही सरल, स्थिर, दो स्तर मेनू है कि मैं बनाया है । नीचे वैचारिक नक्शा संरचना है।MvcSiteMapProvider - एकाधिक पन्ने मेरी <strong>MVC3</strong> परियोजना में एक मेनू नोड
- Home
- Member Center
- Member Listing [SELECTED]
- Event Calendar
- Documents
- Administration
अब, वहाँ सदस्य लिस्टिंग के तहत कई उप पृष्ठों (जैसे विस्तार, संपादित करें, आदि) कर रहे हैं, लेकिन मैं नहीं इन 3 स्तर मेनू आइटम के रूप में प्रदर्शित करना चाहते हैं (मुख्य रूप से, क्योंकि वे से बंधा रहे हैं एक विशिष्ट सदस्य आईडी)। हालांकि, मैं चाहता हूं कि इन सभी तीसरे स्तर के पृष्ठों को सदस्य सूची मेनू नोड में "बंधे" हों ताकि यह इन पृष्ठों पर चयनित के रूप में दिखाया जा सके।
मेरे पास मेरी Mvc.SiteMap फ़ाइल में निम्न कोड:
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode title="Member Center" area="Members" controller="Home" action="Index" roles="Approved Member" >
<mvcSiteMapNode title="Member Listing" area="Members" controller="Member" action="List" />
<mvcSiteMapNode title="Event Calendar" area="Members" controller="Event" action="List" />
<mvcSiteMapNode title="Documents" area="Members" controller="Document" action="List" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Administration" area="Admin" controller="Home" action="Index" roles="Site Administrator" >
</mvcSiteMapNode>
</mvcSiteMapNode>
मेरी _Layout.cshtml फ़ाइल में, मैं निम्नलिखित कोड का उपयोग कर रहा मेनू प्रस्तुत करना करने के लिए:
@Html.MvcSiteMap().Menu(1, true, true, 1, true, true)
अंत में, मैंने SiteMapNodeModel.cshtml फ़ाइल को संशोधित किया ताकि वह "चयनितमेनूइटम" कक्षा को नोड में जोड़ सके जो उस पृष्ठ से संबंधित है जो उपयोगकर्ता देख रहा है। यहां स्निपिट है जो मेनू नोड प्रस्तुत करता है। जब तक मैं सदस्यों क्षेत्र में आगे नेविगेट
@model SiteMapNodeModel
<a href="@Model.Url" class="@(Model.IsCurrentNode ? "selectedMenuItem" : "")">@Model.Title</a>
प्रदर्शन और मानचित्र के नेविगेशन बस ठीक काम करता है,। उदाहरण के लिए, यदि मैं पिछले Members/Member/List
(जो मेनू को सही तरीके से प्रदर्शित करता है) और Members/Member/Detail/1
जैसे पृष्ठ पर, सदस्य केंद्र ("सदस्य सूची", "ईवेंट कैलेंडर" आदि) के अंतर्गत बच्चे नोड्स गायब हो जाते हैं। इसलिए, यहाँ मेरे दो मुद्दों मैं अपने वर्तमान कोड के साथ होती है:
मुझे लगता है कि किसी भी पृष्ठ, "सदस्य केन्द्र" माता पिता मेनू नोड का हिस्सा है निर्दिष्ट करना चाहते हैं, ताकि बच्चे का मेनू नोड्स " सदस्य केंद्र "प्रदर्शित किया जाएगा, भले ही दिए गए पृष्ठ को मेनू संरचना में एक विशिष्ट नोड के रूप में परिभाषित किया गया हो।
मैं निर्दिष्ट करना चाहता हूं (संभावित रूप से दृश्य या नियंत्रक कार्रवाई में) कि एक विशिष्ट पृष्ठ किसी विशिष्ट मेनू नोड से बंधे होना चाहिए। उदाहरण के लिए, जब उपयोगकर्ता
Members/Member/Detail/1
पर है, तो मैं बस "सदस्य सूची" बाल नोड कोIsCurrentNode
के रूप में निर्दिष्ट करना चाहता हूं ताकि SiteMapNodeModel.cshtml फ़ाइल इसे "चयनितमेनूइटम" वर्ग के साथ सही तरीके से सजा दे।
कोई सुझाव?
मैक्स, आपको बहुत बहुत धन्यवाद! इससे दूसरे स्तर के नोड्स गायब होने का मूल मुद्दा हल हो जाता है। हालांकि, क्या ऐसा होता है कि जब आप ऐसा करते हैं तो क्या दूसरे स्तर के नोड को IsCurrentNode पर सेट करना है? उदाहरण के लिए, मैं सदस्य विवरण पृष्ठ पर चयनित सदस्य सूची नोड को चयनित के रूप में दिखाऊंगा। यदि नहीं, तो यह एक बड़ा सौदा नहीं है ... केवल एक सौंदर्य अनुरोध है। – bigmac