Ich habe versucht, eine Möglichkeit zu finden, eine dynamische rollenbasierte Navigationslösung für ein Projekt zu erstellen, an dem ich gerade arbeite.Rollenbasierte Navigation
sollte die Navigation nur Links angezeigt, die auf die Rolle Benutzer relativ sind, zum Beispiel: ein Administrator Links Anwendungsstatistik anzeigen, verwalten Kundenkonto, ect ..., während ein Standardbenutzer Link müßte haben zu verwalten Ihr Konto, kommunizieren mit Freunden, usw.
Ich habe derzeit eine einzige Teilansicht namens Navigation mit einigen grundlegenden bedingten Anweisungen für die Überprüfung der Rolle und eine Mischung aus Markup für die Anzeige der entsprechenden Links. Das funktioniert, aber ich weiß, dass es schnell unübersichtlich werden könnte.
Navigation Teilansicht:
@if(User.IsInRole("Admin")) {
<li><a href="#">Statistics</a></li>
<li><a href="#">Accounts</a></li>
<li><a href="#">Dashboard</a></li>
}
@if(User.IsInRole("User")) {
<li><a href="#">Account</a></li>
<li><a href="#">Friends</a></li>
}
// code omitted
Gibt es eine Möglichkeit, diese Logik aus dem Blick zu bekommen und lassen Sie den Regler damit umgehen?
verwendet Ihre Teilweise ein Kind Aktionsmethode? –
Danke Dave. Nein, tut es nicht. Habe bisher noch keine Child Actions verwendet. Würde es Ihnen etwas ausmachen, auf Ihre Frage zu erweitern? Ich bin mir nicht sicher, welche Rolle Kindaktionen in diesem Szenario spielen würden. – mezmi
Kind Aktionen sind großartig. Sie sind Aktionen, die ein Modell teilweise an Sie zurückgeben. Sie würden sie 'Aktion ("/Controller/Action/id ") nennen. Der ID-Teil kann Ihr Handle sein, zu welchem Nav Sie erstellen möchten, und das Modell kann eine Liste von Nav-Elementen sein. Noch besser, Ihre Kinderaktion kann Ihre Benutzerrolle ohne Argument nachschlagen und die richtige Navigationsleiste zurückgeben. Ich habe dies bereits für die rollenbasierte Navigation verwendet. –