17
votes

In MVC2 I have used Page.User.Identity.Name using the <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

How can I use the same in MVC3?

3

3 Answers

29
votes

You can always do something like:

@Html.ViewContext.HttpContext.User.Identity.Name

but don't.

Normally a view shouldn't try to fetch such information. It is there to display whatever information is passed by the controller. It should be strongly typed to a model class which is passed by a controller action.

So in the controller action rendering this view:

[Authorize]
public ActionResult Index()
{
    var model = new MyViewModel
    {
        Username = User.Identity.Name
    }
    return View(model);
}

Now inside the view feel free to use this information:

@Model.Username
11
votes

MVC 2

<%: this.Page.User.Identity.Name %>

MVC 3

@this.User.Identity.Name
1
votes

I had the same problem. I used this tutorial to solve this issue.

In short, in your view, put this code:

@Context.User.Identity.Name

Just make sure that the project is set to authenticate with windows.