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




net fra framework 4.5 download (7)

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

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

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


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

मेरे पास 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

यदि मेनू प्रति गतिशील है तो आपको प्रत्येक उपयोगकर्ता के लिए डेटाबेस को हिट करना होगा। तब से मैं संभवतया सत्र में इसे स्टोर करूँगा ताकि भविष्य के दौरों से डेटाबेस से बच सकें।

यदि यह गतिशील है, लेकिन पूरी साइट एक ही आइटम देखती है, तो उसे डेटाबेस में डाल दिया और परिणामों को कैश कर दिया


हमारे पास एक समान सुविधा है

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

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

बीटीडब्ल्यू कंपोनेंटआर्ट बेकार है। फिर मुझे लगता है कि सभी तीसरे पक्ष के नियंत्रण पुस्तकालयों करते हैं


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


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

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

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


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







menu