Как вы получаете UserID объекта User в ASP.Net MVC? - PullRequest
72 голосов
/ 29 мая 2009

У меня есть несколько таблиц с уникальным идентификатором UserID, который относится к aspnet_Users.UserID. Когда пользователь отправляет некоторые данные для этих таблиц, так как метод контроллера имеет [Authorize], я получаю объект User. Я могу получить имя пользователя с помощью User.Identity.Name, но как мне получить UserID, чтобы иметь возможность устанавливать (владение) отношения?

Ответы [ 11 ]

0 голосов
/ 15 декабря 2015

Обычно вы можете просто использовать WebSecurity.currentUserId, но если вы находитесь в AccountController сразу после создания учетной записи и хотите использовать идентификатор пользователя, чтобы связать пользователя с некоторыми данными в других таблицах, тогда WebSecurity.currentUserId (и все решения выше), к сожалению, в этом случае возвращает -1, поэтому он не работает.

К счастью, в этом случае у вас под рукой есть контекст db для таблицы UserProfiles, поэтому вы можете получить идентификатор пользователя следующим образом:

UserProfile profile = db.UserProfiles.Where(
    u => u.UserName.Equals(model.UserName)
).SingleOrDefault();

Я недавно сталкивался с этим случаем, и этот ответ сэкономил бы мне кучу времени, так что просто поместил его там.

...