2011-12-27 16 views
5

के आधार पर रनटाइम पर मेनू बनाना, मैं उपयोगकर्ता की भूमिका के आधार पर अलग-अलग मेनू बनाने की कोशिश कर रहा हूं।उपयोगकर्ता भूमिका

उदाहरण के लिए, यदि उपयोगकर्ता एक व्यवस्थापक भूमिका है, मेनू दिखाई जाएंगी:

  • AdminPane

  • RegisterUser

  • UserRoles

और यदि उपयोगकर्ता मूल भूमिका है:

  • ViewProducts

  • makeOrder

यह एक लेआउट उदाहरण है।

मैं कुछ मदद की सराहना करता हूं क्योंकि मैं बिना किसी किस्मत के 2 घंटे के लिए नेट खोज रहा हूं।

धन्यवाद।

+0

यह एक ASP.NET वेब अनुप्रयोग है ..? यदि ऐसा है तो मास्टर पेज का उपयोग करें और वहां से टैब या मेनू की दृश्यता सेट करें, मैंने इस दृष्टिकोण का उपयोग कई बार किया है जब सक्रिय समूह निर्देशिका को सक्रिय डायरेक्ट्री – MethodMan

+0

पर रोक दिया गया है। यहां बहुत कम जानकारी है। इस मामले में "मेनू" वास्तव में क्या है? आपके मौजूदा "मेनू" कैसे बनाए गए हैं? क्या आप उन्हें सिर्फ एक मास्टर पेज में बना रहे हैं? हो सकता है कि मास्टर पेज पर दोनों मेनू हों और केवल एक सशर्त के साथ उन्हें दिखाएं/छुपाएं जो लॉग-इन उपयोगकर्ता की भूमिका की जांच करता है? – David

+0

मुझे खेद है, लेकिन मुझे समझ में नहीं आया कि आपने अभी क्या कहा है ... और हाँ यह एक एएसपीनेट वेब एप्लिकेशन है, मैं इसे उपयोगकर्ता नियंत्रण के रूप में करने जा रहा था और इसे मास्टरपेज में खींचता हूं .. – Mazda

उत्तर

4

क्या आप क्या करना चाहते है अपने web.config तो की तरह, अपने system.web अनुभाग में एक अनुभाग है:

<siteMap> 
     <providers> 
      <add name="anonymous" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAnonymouse.sitemap"/> 
      <add name="user" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourNormalUser.sitemap"/> 
      <add name="admin" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAdmin.sitemap"/> 
     </providers> 
    </siteMap> 

तो इस के साथ, आप तीन साइट मानचित्र प्रदाताओं परिभाषित करना होगा, प्रत्येक आवश्यक मेनू आप देख रहे हैं के लिए अपने-अपने sitemap फ़ाइलों की ओर इशारा करते प्रत्येक उपयोगकर्ता प्रकार के लिए।

फिर आपके पास SiteMapDataSource होगा जो आपका मेनू सर्वर नियंत्रण उपयोग करेगा। यह आपके मास्टर पेज पर सबसे अधिक संभावना है। अपने मास्टर पेज के अपने Page_Load() पर आप तर्क होगा गतिशील और प्रोग्राम के रूप में अपने SiteMapDataSource नियंत्रण के साइटमैप डेटा स्रोत सेट करने के लिए:

if (HttpContext.Current.User.Identity.IsAuthenticated) 
    { 
     if (HttpContext.Current.User.IsInRole("Admin")) 
      SiteMapDataSource1.Provider = SiteMap.Providers("admin"); 
     else 
      SiteMapDataSource1.Provider = SiteMap.Providers("user"); 
    } 
    else 
     SiteMapDataSource1.Provider = SiteMap.Providers("anonymous"); 
0

यह सब MasterPages का उपयोग करके और पर पोस्टबैक या प्रारंभिक पृष्ठ लोड पूरा किया जा सकता यदि आप एक सत्र चर कि मान संग्रहीत कर लेता बना सकते हैं या ActiveDirectory काफी सरल के खिलाफ कुछ लिख सकते हैं ..

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