Question

J'ai une application Web ASP.NET MVC3 avec C # et Razor.

Grâce à un formulaire dans une vue, j'obtiens le Context.User.Identity.Name soumis à une méthode d'action dans un Controller A .

Je voudrais avoir disponible cette variable à l'échelle de l'application (entre plusieurs contrôleurs). Maintenant, je peux simplement l'attribuer à une variable globale _UserName dans le contrôleur A , mais bien sûr, elle n'est pas disponible dans le contrôleur B .

Est-il possible de faire cela?

Merci

Francesco

Était-ce utile?

La solution

Si vous y accédez dans n'importe quel contrôleur, vous devez utiliser HttpContext.User.Identity dans vos méthodes de contrôleur - il sera disponible ici.Pas besoin de stocker dans la session.

Autres conseils

Créez un contrôleur parent dont tous vos contrôleurs héritent et définissez-y la variable.Vous pouvez faire un certain nombre de choses avec lui à partir de là - l'envelopper dans un modèle de vue, mettre quelques détails utilisateur dans le 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
    }
}

Ensuite, héritez simplement de UserController

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

Vous devriez examiner la mise en cache et éventuellement utiliser la session des utilisateurs pour stocker ces informations.

Découvrez ceci question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top