2012-08-17 9 views
8

मैं एक परियोजना में एएसपी.नेट एमवीसी साइटमैप प्रदाता का उपयोग कर रहा हूं, और यह बहुत अच्छा काम कर रहा है। हालांकि, मेनू आइटम को छिपाने के तरीके को समझने का प्रयास करने में मुझे कठिन समय हो रहा है। मैं जिस मेनू आइटम को वैश्विक नेविगेशन में प्रदर्शित करने से छिपाना चाहता हूं वह मेरा "साइट मानचित्र" पृष्ठ है। अब मुझे पता है कि mvcSiteMapNode पर मेरे लिए उपलब्ध VisibilityProvider नामक कुछ है - लेकिन मुझे यह पता लगाना प्रतीत नहीं होता कि इसे कैसे काम करना है।एएसपी.नेट एमवीसी साइटमैप प्रदाता - वास्तविक मेनू में एकल आइटम को 'छुपाएं'

उत्तर

5

सबसे पहले, मेरा सुझाव है कि आप इस विकी पेज को पढ़ें: Creating a Custom SiteMapNodeVisibilityProvider। फिर विशिष्ट नोड है कि आपके साइट मानचित्र पृष्ठ को इंगित करता है, यह इस तरह से की घोषणा:

<mvcSiteMapNode title="Site Map" controller="Home" action="Map" visibility="false" /> 

अब, जब IsVisible विधि (ऊपर लिंक विकि पृष्ठ में दिखाया गया है) को लागू करने के लिए, आप यह कर सकते हैं:

string visibility = mvcNode["visibility"]; 

// Is a visibility attribute specified? 
if (!string.IsNullOrEmpty(visibility)) 
{ 
    isVisible = Convert.ToBoolean(mvcNode["visibility"]); 

    if (!isVisible) 
    { 
      return false; 
    } 
} 

return true; 
6

यहां मेरे उत्तर से लिया गया है कि नोड्स और विकल्पों को कैसे छिपाना है।

https://stackoverflow.com/a/27095721/853295

आप आप ऊपर के लिंक से सेट कर सकते हैं कि कैसे एक नोड

https://github.com/maartenba/MvcSiteMapProvider/wiki/Advanced-Node-Visibility-with-ISiteMapNodeVisibilityProvider

कुछ सेटिंग को छिपाने के लिए पर इस गाइड का उपयोग करना चाहिए:

<appSettings> 
    <!-- Visibility will not filter to children --> 
    <add key="MvcSiteMapProvider_VisibilityAffectsDescendants" value="false"/> 
    <!-- Set default visibility provider --> 
    <add key="MvcSiteMapProvider_DefaultSiteMapNodeVisibiltyProvider" value="MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider, MvcSiteMapProvider"/> 
</appSettings> 

एक बार जब आप जोड़ लिया है ऐप सेटिंग्स, ब्रेडक्रंब में आप जो भी नोड देखना चाहते हैं उसे निम्न में जोड़ें लेकिन मेनू नहीं:

visibility="SiteMapPathHelper,!*" (SiteMapPathHelper - नोड, sitemappath में दिख रहा है * - यह अन्य सभी नियंत्रण के लिए अदृश्य है!)

जैसे:

<mvcSiteMapNode title="Administration" area="Admin" clickable="false" visibility="SiteMapPathHelper,!*" /> 

अन्य विकल्प उपलब्ध:

प्रकार ......................... यह
कैननिकल हेल्पर ....... कैननिकल एचटीएमएल हेल्पर को प्रभावित करता है
मेनूहेल्पर .............. मेनू एचटीएमएल हेल्पर
मेटारोबॉट्स हेल्पर .... मेटा रोबोट एचटीएमएल हेल्पर
साइटमैपहेल्पर .......... साइटमैप एचटीएमएल हेल्पर
SiteMapPathHelper ... SiteMapPath एचटीएमएल हेल्पर
SiteMapTitleHelper ... शीर्षक एचटीएमएल हेल्पर
XmlSiteMapResult .... /sitemap.xml endpoint

+0

यह सबसे आसान समाधान है की साइटमैप XML आउटपुट, क्योंकि यह करता है अतिरिक्त कोड की आवश्यकता नहीं है। –

संबंधित मुद्दे