2010-01-12 5 views
1

Je souhaite obtenir une valeur de la session utilisateur et l'afficher dans le fichier site.master. Comment puis-je faire cela pour que chaque page de vue ait cette valeur? Dois-je placer ViewData ["MyValue"] dans chaque action du contrôleur? Existe-t-il une façon globale de faire cela en un seul endroit, donc je n'ai pas besoin d'avoir le même code dans chaque action du contrôleur?Données de session dans site.master

+0

Vous parlez de l'objet de la session, mais mentionnez ViewData. Pourquoi ne pouvez-vous pas appeler '<% = Session [" MyValue "]%>' dans la page maître? –

+0

Je pense que mon cerveau vérifié pendant une minute ... lol – Joe

Répondre

0

<% = Session [ "MyValue"]%> dans la page principale

3

Vous pouvez écrire un attribut de filtre d'action et décorer votre contrôleur avec elle:

public class CustomFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     base.OnActionExecuted(filterContext); 
     filterContext.Controller.ViewData["MyValue"] = "some value"; 
    } 
} 

Et puis décorer le contrôleur avec cet attribut:

[CustomFilter] 
public class MyController: Controller 
{ 
    // actions 
} 

Cela garantira que ViewData["MyValue"] sera mis sur toute action appartenant à ce contrôleur.

+0

avez-vous un exemple de cela? – Joe

+2

De plus, vous pouvez avoir votre propre 'BaseController' avec l'attribut' CustomFilter' dont tous vos contrôleurs individuels héritent. Cela signifie que vous devez seulement l'avoir en un seul endroit. – Charlino

Questions connexes