Question

I have an ASP.NET MVC3 web application with C# and Razor.

Through a form in a View I get the Context.User.Identity.Name submitted to an action method in a Controller A.

I would like to have available this variable application-wide (between multiple controllers). Now I am just able to assign it to a global variable _UserName within the Controller A, but of course it is not available in Controller B.

Is it possible to do that?

Thanks

Francesco

Was it helpful?

Solution

If you are accessing this in any controller, you should use HttpContext.User.Identity in your controller methods - it will be available there. No need to store in the session.

OTHER TIPS

Create a parent controller from which all your controllers inherit from and set the variable there. You could do a number of things with it from there--wrap it in a view model, put some user details into the ViewBag, etc

public class UserController : Controller
{
    // create your own User class with as many properties as you need
    protected User user { get; set; }

    public UserController()
    {
        user = // get user from db, wherever
    }
}

Then, just inherit from UserController

public class ControllerA : UserController
{
    public ActionResult DoSomething()
    {
        user.Property = 123;
    }
}

You should look into caching and possibly using the users session store this information.

Check out this question.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top