2012-03-31 6 views
5

Dies ist mein erstes Mal auf StackOverflow Posten, aber diese Website ist super. Vielen Dank im Voraus für jede Hilfe, die Sie geben können.ASP.NET - So erstellen Sie dynamisch dynamische benutzerspezifische Menü aus der Datenbank

Ich habe eine Website, die Benutzern Zugriff auf verschiedene Seiten gewährt, basierend auf ihren Berechtigungen, so dass jeder Benutzer sein Menü beim Anmelden dynamisch generieren muss. Die Optionen eines Benutzers werden sich jedoch wahrscheinlich nicht sehr oft ändern.

Die Website verfügt derzeit über eine Masterseite, die eine Liste ihrer Seiten aus der Datenbank abruft und ein Menü erstellt. Dies geschieht jedes Mal, wenn der Benutzer eine Seite lädt.

Ich wollte Anrufe in die Datenbank reduzieren, also begann die Menü-Daten in eine Session-Variable. Ich hatte gehofft, dass jemand, der mehr Erfahrung hat, mir helfen könnte, dafür zu sorgen, dass dies der beste Weg ist. Ich denke, ich würde eine Möglichkeit bevorzugen, es auf dem Computer des Benutzers und nicht auf dem Server zu speichern.

Ich habe das ist mein Master-Seite laden:

User u = new User(Page.User.Identity.Name, Globals.getCnString()); 
     DataTable menu; 
     if(Session["MENU"] == null) 
     { 
      Session["MENU"] = u.getMenu(); 
     } 
     menu = (DataTable)Session["MENU"]; 

     foreach (DataRow r in menu.Rows) 
     { 
      //build menu code here. 
     } 

Nochmals vielen Dank!

Antwort

1

Wenn Benutzeroptionen werden nicht sehr oft ändern, warum erstellen Sie nicht das Menü nur, wenn die Änderung passiert, speichern Sie es in Profiltabelle des Benutzers (im HTML-Format), und übergeben Sie es an ein Literal-Steuerelement Auf der Master-Seite anstelle des Menüs werden Sie auf diese Weise nicht auf dem Computer des Benutzers gespeichert (was für eine Website nicht empfohlen wird).

0

Erstellen Sie eine XML-Datei mit der Liste der URLs. Fügen Sie für jedes URL-Element ein Attribut für Berechtigungen hinzu und legen Sie die Sichtbarkeit der einzelnen Links fest.

Verwandte Themen