ASP.NET MVC-Anzeige Benutzer-Namen oben auf der Seite nach dem login
Möchte ich behalten, den Benutzernamen am oberen Rand des Bildschirms. Ich habe mehrere views und Controller. Ich behalten wollen, den gleichen Wert, selbst wenn ich die Navigation zu verschiedenen Seiten.
Habe ich verwendet
@Html.DevExpress().Label(settings =>
{
settings.Text = ViewBag.Name;
}).GetHtml()
Habe ich dieses label in shared folder - _mainLayout
(So dass die Beschriftung sollte in allen Seiten)
Ich habe auch versucht mit session-Variablen, ViewData und Tempdata. Aber der Wert hält nur in einer Ansicht. Wenn ich navigieren Sie zu einer anderen Ansicht nach ist es nicht Rendern.
Wie kann dies erreicht werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie müssen den Namen des aktuellen Benutzers, Sie sind besser, um es auf diese Weise:
ViewBag, ViewData und Tempdata sind nur gültig, auf der Seite gibt es Sie schon verschoben/umgeleitet aus dem controller, wo Sie setzen Sie.
EDIT:
Diese Methode nutzt eine Aktion Filter-Attribut-Klasse handle Aktion Ausführung auf dem Controller. Zunächst müssen Sie eine neue Aktion erstellen-Filter-Klasse, nennen es, was Sie wollen, aber machen es Erben von der ActionFilterAttribute Klasse. Sie sollten dann fügen Sie die overrided OnActionExecuted-Methode mit der ActionExecutedContext argument:
Weiter, Sie haben Ihre layout-Seite nehmen Sie ein ViewModel mit einer public string parameter, wobei der username als string:
Dann auf der layout Seite einen einfachen check (wo Sie möchten, es zu ziehen), um sicherzustellen, dass der Wert nicht null ist und falls nicht, um es zu zeichnen, etwa so:
Nun in allen Ansichten, in denen Sie zeigen möchten, Benutzername, lassen Sie einfach Ihre ViewModel für die Seite Erben von Ihrem BaseViewModel Klasse und legen Sie den Benutzernamen in der session-variable, wenn Sie wollen, dass es gezeigt werden.
Haben Sie einen Blick auf diese SO schreiben Sie für weitere Informationen über session-Variablen: hier
Ich hoffe, das hilft!