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
  • 58,546
  • 53
  • 279
  • 406
Punya Munasinghe
  • 255
  • 1
  • 3
  • 18

5 Answers5

3

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,372
  • 1
  • 25
  • 47
Haitham Shaddad
  • 4,230
  • 2
  • 13
  • 19
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
  • 196
  • 3
  • 11
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,103
  • 1
  • 18
  • 25
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,356
  • 2
  • 17
  • 18