0

I'm developing an asp.net application using c# according to mvc. In there i'm creating a user profile which can be edit or deactivate to the current logged user. In my user profile view i have a field for the email. So that i need to get current logged user's email address to that field (input tag) in View file. How to get the currently logged user's email address to a View file? And I have used Identity model.

Sampath
  • 63,341
  • 64
  • 307
  • 441
Punya Munasinghe
  • 261
  • 1
  • 6
  • 20

5 Answers5

3

As of MVC 5 this is how you do it based on this SO question:

var user = UserManager.FindById(User.Identity.GetUserId());
var email = user.Email;
Community
  • 1
  • 1
james
  • 216
  • 4
  • 12
2

It depends on your code, are you using the email to login or a username? If you are using the email, then call the User.Identity.Name to get it.

If you are using a username, then use the same line to get the username then call the UserManager class to get the User object using the username and then use the email property -

UserManager.FindById(User.Identity.GetUserId()); 

Put the email in a ViewBag, ex: ViewBag.Email = user.Email.

Read that value in the view @ViewBag.Email

Heemanshu Bhalla
  • 3,603
  • 1
  • 27
  • 53
Haitham Shaddad
  • 4,336
  • 2
  • 14
  • 19
0

User.Identity.GetUserName(); will give you current logged in user's email address.You should check default MVC template for more help.

Ravi A.
  • 2,163
  • 2
  • 18
  • 26
0

If you really use identity model, Just call it in view: @User.Identity.GetUserName()

zcoleen
  • 11
  • 2
0

If you have a filed for "email" in your ApplicationUser you can access it without a query getting from claims, eg in controllers you can:

this.User.GetClaimValue("email")
fiorebat
  • 3,431
  • 2
  • 18
  • 18