2017-09-08 1 views
0

Ich begann ASP.NET zu lernen und ich bin immer noch nicht vollständig vertraut mit ihm. Ich muss Account Controller-Daten an meine Home-Index-Ansicht übergeben. Ich manipuliere die Standardauthentifizierung. Ich habe mithilfe der Migration eine neue Spalte (Gender) in die Tabelle ASPNETUSERS eingefügt. Ich brauche die aktuellen Login-Benutzerdetails und zeige sie in meine Index Ansicht von HomeController.ASP.NET MVC Controller zum Anzeigen von Daten

Ich habe bereits gefiltert, indem Sie den folgenden Code innerhalb AccountController verwenden.

var currentUserId = User.Identity.GetUserId(); 
var x = UserManager.FindById(currentUserId); 
ViewBag.Gender = x.Gender; 

Ich denke, dieser Code kann bestimmte Spalte für die Anmeldung Benutzer-ID gefiltert werden. Denke ich falsch über diese? Wenn ich falsch liege, bitte erkläre es.

Das Hauptproblem, dem ich gerade gegenüberstehe, besteht darin, diese @ViewBag.Gender zu Index Sicht zu übergeben. Ist es möglich, @ViewBag.Gender in der Index Ansicht von HomeController zu verwenden? Mein Verständnis ist die ViewBag muss innerhalb der HomeController definiert werden, um Index Ansicht Seite HomeController zu passieren.

Wie kann ich AccountController Daten an Index Blick auf HomeController übergeben? Ich beziehe mich nicht auf die Verwendung ViewBag. Solange es den Wert übertrifft, bin ich damit zufrieden. Und bitte geben Sie mir einige Vorschläge, dies perfekt zu tun.

+0

Nein, Sie können mit 'ViewBag' keine Daten von einem Controller zu einem anderen übertragen (obwohl Sie' TempData' verwenden könnten.) Verwenden Sie einfach das Code-Snippet oben in der 'Index()' Methode von 'HomeController'. –

+0

Vielleicht Sie müssen die Daten in db oder Cache persistieren – Nico

+0

'ViewBag' verwendet, um Controller-Daten in Sicht zu übergeben.Sie können' TempData' oder 'Session' verwenden, um zwischen Controllern zu wechseln.Auch' @ ViewBag.Gender' sollte in 'HomeController verwendet werden .Index() 'Methode. –

Antwort

0

Ich fand tatsächlich die Antwort von einem anderen Fragebereich. get current user email in Identity

ApplicationUser x = System.Web.HttpContext.Current.GetOwinContext() 
    .GetUserManager<ApplicationUserManager>() 
    .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); 

ViewBag.Gender = x.Gender; 

ich dies in meinem HomeController verwenden können und die ViewBag-Index des HomeController passieren @ViewBag.Gender

mit diesem Code arbeiten ohne Fehler muss ich

using Microsoft.AspNet.Identity; 
using Microsoft.AspNet.Identity.Owin; 
using ProjectName.Models; 
unter Verwendung von Referenzen einfügen

Vielen Dank für Ihre Vorschläge

0

Verwenden Sie TempData ["Geschlecht"] in AccountController und umleiten zu HomeController. In HomeController erhalten Sie diese Daten in ViewBag und verwenden Sie es in View.

Verwandte Themen