2012-12-21 19 views
14

Wie kann ich die UserId des angemeldeten Benutzers erhalten? Ich verwende das vom Standardsystem generierte AccountModel. Ich kann den Benutzernamen mit:Anmelden Benutzername des Benutzers

User.Identity.Name 

bekommen, aber ich sehe nicht das UserId-Feld. Ich möchte die UserId als Fremdschlüssel für eine andere Tabelle verwenden.

+2

Einfache Mitgliedschaft? ASP.NET-Mitgliedschaft? –

+0

Einfache Mitgliedschaft – naveed

Antwort

14
+0

Hmm, ich bin immer: Fehler 'System.Web.Security.MembershipUser' enthält keine Definition für – naveed

+0

Thanks 'GetUser', da Typo, es war wohl sein 'Membership'. –

+0

Ok, das hat funktioniert. Vielen Dank! – naveed

9

Der beste Weg, um dies zu tun ist, um die WebSecurty Klasse verwenden

var memberId = WebSecurity.GetUserId(User.Identity.Name); 

und vergessen Sie nicht hinzufügen [InitializeSimpleMembership] oben auf Ihrem Controller :)

+0

Das hat auch funktioniert, danke. – naveed

+0

Solange Ihr Provider die Voraussetzungen erfüllt, ein "int" als eindeutigen Bezeichner zu verwenden. –

+0

danke. es war hilfreich :) –

19

Versuchen Sie folgendes:

using Microsoft.AspNet.Identity; 
User.Identity.GetUserId(); 

Das ist, wie seine in den Teilansichten für aktuelle MVC (MVC5/EF6/VS2013) Vorlagen gemacht.

Korrigieren Sie mich, wenn ich falsch liege, weil ich die Antworten von Aviatrix oft gesehen habe, aber was passiert, wenn mehr als ein Benutzer denselben Namen in der Datenbank hat?

+0

Das funktioniert auch für mich! +1 – Bojangles

+0

Diese Lösung ist nicht möglich, wenn der Benutzer bereits angemeldet ist und versucht, das aktuelle Passwort zu ändern. – usefulBee

Verwandte Themen