2013-06-07 3 views
-1

Dans mon application, il est nécessaire de passer un paramètre spécifique, quand il existe, à travers toutes les pages.Passage du paramètre à travers toutes les pages MVC4

Quelle est la meilleure façon de faire cela? Il y a une fonction qui est appelée chaque fois que je fais une réquisition GET ou POST, dans laquelle je peux vérifier si le paramètre existe et le persister?

+2

Pouvez-vous publier la (les) fonction (s) existante (s) et montrer un exemple de ce que vous avez déjà essayé? Peut-être que votre chemin est déjà le meilleur. –

+1

Ne pouvez-vous pas simplement stocker le paramètre dans la session et y accéder où c'est nécessaire? –

+0

Je ne sais pas pourquoi la downvote. Quelque chose ne va pas avec ma question? –

Répondre

1

Créez un filtre d'action comme celui ci-dessous.

public sealed class ScaffoldActionFilter : ActionFilterAttribute 
    { 

     public override void OnActionExecuted(ActionExecutedContext filterContext) 
     { 
       var model = filterContext.Controller.ViewData.Model as PageModelBase; 
        // Whatever you want to do. 
       model.myParam = "Im available in all views"; 
     } 
    } 

Ensuite, inscrivez-le pour l'exécuter à chaque demande. Regardez dans app_start/filterconfig.cs et et comme ça.

filters.Add(new ScaffoldActionFilter()); 

Maintenant, renvoyez simplement le modèle de base de page standard ou un type dérivé de chaque vue et vous obtenez ce que vous voulez.

+0

Merci pour la réponse @RubbleFord! En faisant cela, il n'y a pas besoin de mettre le [ScaffoldActionFilter] sur chaque action, non? –

+1

C'est vrai, vous l'enregistrez comme un filtre global, donc il fonctionne pour tout. Une chose à noter est que vous devrez peut-être configurer des exclusions pour jsonresults ou partialresults, mais c'est facile à faire. Demande-moi si tu es perplexe. Aussi pouvez-vous marquer cela comme la réponse :-) besoin des points. – RubbleFord

+0

Merci! M'a beaucoup aidé! –

Questions connexes