.net-3.5 - net fra framework 4.5 download




मास्टर पृष्ठ पर मेनू नियंत्रण को पॉप्युलेट करने का सबसे अच्छा तरीका क्या है? (6)

डेटाबेस? पृष्ठ चर? Enum?

मैं राय के लिए यहाँ देख रहा हूँ


एएसपी.नेट साइटमैप सुविधा इसके लिए बनाई गई है और कई मामलों में अच्छी तरह से काम करती है। यदि आप एक ऐसे स्थान पर पहुंचते हैं जहां आप चाहते हैं कि आपका मेनू आपके साइटमैप से अलग दिख सके, तो कुछ उपाय हैं

यदि आपके पास गतिशील साइट संरचना है, तो आप कस्टम साइटमैप प्रदाता बना सकते हैं । आप उस बिंदु पर पहुंच सकते हैं जहां इसकी कीमत के मुकाबले यह अधिक परेशानी है, लेकिन सामान्य तौर पर अपने साइटमैप से अपने मेनू को पॉपुलिंग करने से आपको कुछ अच्छी सुविधाएं मिलती हैं जैसे सुरक्षा ट्रिमिंग, जिसमें मेनू विकल्प लॉगिन किए गए उपयोगकर्ता के लिए उपयुक्त हैं।


एक साइटमैप के लिए बाध्य करना निश्चित रूप से सबसे आसान है


यह एक दिलचस्प सवाल है, इसमें कई तरीकों से संपर्क करने का तरीका है

आप एक्सएमएल से मेनू संरचना को लोड कर सकते हैं, वैसे ही एएसपी.NET नेविगेशन नियंत्रणों / "साइटमैप" सेटअप का निर्माण कार्य करता है। यह संभवतः एक अच्छा विकल्प है, और इसके लिए विजुअल स्टूडियो में काफी अच्छा औजार है।

यदि यह एक गतिशील मेनू है जिसे बहुत कुछ बदलने की आवश्यकता है, तो डेटाबेस से आइटम प्राप्त करना एक अच्छा विचार हो सकता है, लेकिन आप निश्चित रूप से उन्हें कैश करना चाहते हैं, इसलिए डीबी को प्रत्येक पृष्ठ रेंडर पर नहीं मारा जाता है।


यह पूरी तरह से निर्भर करता है कि साइट कैसे काम करती है। मैं सबसे अधिक से सहमत हूं कि साइटमैप आमतौर पर यह करने का सबसे अच्छा तरीका है। हालांकि, यदि आप एक सीएमएस का उपयोग कर रहे हैं, तो आपको उसे डेटाबेस में रखने की आवश्यकता हो सकती है यदि आपके पास वर्गीकरण-केंद्रित साइट है, तो मेनू का निर्माण करने के लिए वर्गीकरण का उपयोग करें नेविगेशन करने के लिए कोई "सबसे अच्छा तरीका" नहीं है, केवल किसी दिए गए हालात के लिए सबसे अच्छा तरीका है


उपयोगकर्ता के परिप्रेक्ष्य से कुशल पहुंच प्राथमिक सुविधा है। एक जेनेरिक सूचक दृष्टिकोण शब्दकोश खोज है , जो बड़े और नेस्टेड मेनू संरचनाओं के लिए अच्छी तरह से फिट बैठता है उपयोगकर्ता क्लिक या अनियंत्रित कीपेज द्वारा नेविगेट करता है, अतिरिक्त तीर कुंजी अग्रिम (दाएं) या हमेशा की तरह ऊपर / नीचे के साथ वापस (बाएं) मैं सुझाव देता हूं कि प्रारंभिक एक को छोड़कर अनुरोध पर मेन्यू को पॉप्युलेट करने के लिए और जब भी कोई अंतिम तत्व चुना जाता है, तो एक जावास्क्रिप्ट कार्रवाई प्रदान करें


मैंने एएसपी .नेट लॉगिन नियंत्रण और एएसपी.नेट वेब एप्लिकेशन के लिए सदस्यता / क्रेडेंशियल्स के लिए प्रपत्र प्रमाणीकरण का उपयोग कर एक साइट बनाई है। और मैं साइट नेविगेशन के लिए एक साइट मानचित्र का उपयोग कर रहा हूं।

मेरे पास ASP.NET TreeView और मेनू नेविगेशन नियंत्रण एक SiteMapDataSource का उपयोग कर आबादी है। लेकिन ऑफ-लिमिट प्रशासक-केवल पृष्ठ गैर-प्रशासक उपयोगकर्ताओं को दिखाई देते हैं।

  1. मैंने एक वेब साइटमैप साइट मैप फ़ाइल बनाई। और मैंने एक्सेस नियम सेट अप करने के लिए एएसपी.नेट वेब साइट एडमिनिस्ट्रेशन टूल का इस्तेमाल किया

  2. मैंने अपने। मास्टर पेज पर नेविगेशन नियंत्रण जोड़ा ...

    <asp:SiteMapPath ID="SiteMapPath1" runat="server" />
    <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource2" />
    <asp:TreeView ID="TreeView1" runat="server"  DataSourceID="SiteMapDataSource1" />
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
    <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" ShowStartingNode="False" />
  3. मैं अपनी वेब .config फ़ाइल में "सत्य" के लिए सुरक्षा सेट कर रहा हूँ ...

    <?xml version="1.0"?>
    <configuration>
        ...
        <system.web>
            ...
            <siteMap defaultProvider="default">
                <providers>
                    <clear/>
                    <add name="default"
                        type="System.Web.XmlSiteMapProvider"
                        siteMapFile="web.sitemap"
                        securityTrimmingEnabled="true"/>
                </providers>
            </siteMap>
            ...
        </system.web>
        ...
    </configuration>
  4. मैंने फ़ाइल के पीछे master.vb कोड में पेड़ को समायोजित किया ...

    Protected Sub TreeView1_DataBound( ByVal sender As Object, ByVal e As EventArgs ) Handles TreeView1.DataBound
    
        'Collapse unnecessary menu items...
        If TreeView1.SelectedNode IsNot Nothing Then
            Dim n As TreeNode = TreeView1.SelectedNode
            TreeView1.CollapseAll()
            n.Expand()
            Do Until n.Parent Is Nothing
                n = n.Parent
                n.Expand()
            Loop
        Else
            TreeView1.ExpandAll()
        End If
    
    End Sub




menu