2011-09-16 18 views
7
<asp:Menu ID="mnu" runat="server" PathSeparator="," CssClass="menu" DynamicMenuItemStyle-CssClass="menu"> 
    <Items> 
     <asp:MenuItem Text="home" NavigateUrl="~/Default.aspx" /> 
     <asp:MenuItem Text="Aboutus" NavigateUrl="#"/> 
     <asp:MenuItem Text="Support" NavigateUrl="#" /> 


    </Items> 
</asp:Menu> 

मैं मास्टर पृष्ठ, में इस मेनू है वेबसाइट में लॉग इन करने पर, उपयोगकर्ता भूमिका के आधार पर मैं सर्वर से मेनू में आइटम जोड़ना चाहते हैं जब पक्ष। मैं उसे कैसे कर सकता हूँ।गतिशील asp.net वेबसाइट में मेनू में आइटम जोड़ें

व्यवस्थापक (मेनू जोड़ने के लिए -> संगठन, संदेश, समूह) उपयोगकर्ता (मेनू जोड़ने के लिए -> संदेश, समूह)

जब से मैं 6 भूमिका है मैं हर पात्र के लिए अलग अलग मेनू आइटम है। यह कैसे

उत्तर

7

किया जा सकता है गुरु के Page_Load में आप की जांच कर सकता उपयोगकर्ता कुछ भूमिकाओं में है कि क्या और गतिशील रूप से मेनू में मान जोड़ते:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (User.IsInRole("admin")) 
    { 
     mnu.Items.Add(new MenuItem 
     { 
      Text = "Administer web site", 
      NavigateUrl = "~/admin.aspx" 
     }); 
    } 
} 
+0

, तो आप कोई आग घटना कोड पर पीछे menuitemclick होगा – Bachask8

0

आप जब उपयोगकर्ता लॉगिन एक सत्र बना सकते हैं।

Session["user"] = user; 

मास्टर पेज में;

var user = Session["user"]; 
3

मैं आमतौर पर साइट मानचित्र और सुरक्षा ट्रिमिंग का उपयोग करता हूं। प्रत्येक साइटमैप नोड में "भूमिकाएं" विशेषता होती है जो इंगित करती है कि मेनू में लिंक देखने के लिए कौन सी भूमिकाओं की अनुमति है। * सभी भूमिकाओं के लिए प्रयोग किया जाता है या आप भूमिकाओं की अल्पविराम से अलग सूची में प्रवेश कर सकते हैं। जैसे

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap> 
    <siteMapNode title="Home" description="Home" 
     url="~/default.aspx" roles="*" > 
    </siteMapNode> 
    <siteMapNode title="Organization" description="Organization" 
     url="~/Organization.aspx" roles="Admin" > 
    </siteMapNode> 
    <siteMapNode title="Message" description="Message" 
     url="~/Organization.aspx" roles="Admin, User" > 
    </siteMapNode> 
</siteMap> 

आदि

तो फिर तुम सुरक्षा अपने web.config में काट-छाँट सक्षम कर सकते हैं:

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> 
    <providers> 
    <add name="XmlSiteMapProvider" 
     description="Default Site Map Provider" 
     type="System.Web.XmlSiteMapProvider" 
     siteMapFile="Web.sitemap" 
     securityTrimmingEnabled="true" /> 
    </providers> 
</siteMap> 

तुम सब तो क्या करना है साइट मैप करने के लिए अपने एएसपी मेनू के डेटा स्रोत सेट किया गया है । अधिक जानकारी यहां मिल सकती है: http://msdn.microsoft.com/en-us/library/305w735z.aspx और यहां: http://msdn.microsoft.com/en-us/library/ms178429(v=vs.80).aspx

मुझे यह दृष्टिकोण पसंद है क्योंकि एक नई भूमिका आधारित मेनू आइटम जोड़ना बहुत आसान है। आपको कोड में मैन्युअल रूप से भूमिका की जांच करने की आवश्यकता नहीं है, जो शायद वैसे भी कथन के रूप में समाप्त हो जाएगा।

0

गतिशील उपयोगकर्ता विशेषाधिकार आधार पर मेनू

C# CLASS FILES 
     public class url_details 
     { 
      public string url; 
      public string page_name; 
      public string icon; 
     } 

     C# inside login page    
     List<url_details> url_list = new List<url_details>();    
     foreach (DataRow dr in dataTable.Rows) 
     { 
      url_details url_item = new url_details(); 
      url_item.url = dr["url"].ToString(); 
      url_item.page_name = dr["page_name"].ToString(); 
      url_item.icon = dr["icon"].ToString(); 
      url_list.Add(url_item); 
     }   
     Session["urls"] = url_list; 


     C#-HTML MENU FORM 
     <% 
      var uruls = (List<url_details>)Session["urls"]; 
      foreach (var url in uruls) 
      {%> 
       <li><a href="..<%=url.url %>"><%=url.icon %><span><%=url.page_name %></span></a></li> 

      <% }     

     %> 
इस के साथ
संबंधित मुद्दे