2011-10-04 5 views
0

Je construis une console d'administration et tous les contrôleurs dépendent d'une sélection déroulante pour le client.Filtre de prédicat global MVC3

Je souhaite déplacer cette sélection client vers la présentation et la conserver dans tous les contrôleurs afin de ne pas avoir à la sélectionner partout.

Quelle est la meilleure façon de procéder?

Merci d'avance. Déplacez le menu déroulant vers votre _layout.cshtml.

Répondre

0
  1. Créez un BaseView dont toutes les vues hériteront et lui donner une propriété pour stocker les clients & Client actuel.
  2. Créez une méthode BaseController qui remplira une instance BaseView.
  3. Stockez le client actuellement sélectionné sur votre session.
  4. Créez un filtre global et vérifiez qu'il vérifie toutes les vues pour voir si elles héritent de BaseView. S'ils le font, ils peuvent les convertir en BaseView, puis remplir les propriétés.
  5. Ecrivez du code dans _layout qui peut utiliser la vue pour remplir la liste déroulante. Je suis un peu flou ici puisque mon collègue a fait cette partie quand nous avons fait quelque chose de similaire.
  6. Lorsque l'utilisateur modifie la valeur de la liste déroulante, vous pouvez utiliser JSON pour appeler une méthode d'action qui mettra à jour le client actuel en session.
+0

Merci. Je vais mettre en œuvre cela demain et voir si je peux le faire fonctionner. – TheGwa

0

Je considérerais écrire l'aide HTML. Vous supposez que tous les oiseaux peuvent voler, mais dites un jour que vous avez un autre scénario exceptionnel et que vous n'avez plus besoin de cette liste déroulante. Vous pouvez également l'inclure dans une vue partielle et afficher cette vue là où vous en avez besoin - il ne s'agit que d'une ligne de code supplémentaire.

E.g.

@section main_content{ 

    @{ Html.RenderPartial("MyPartialViewContainingDropDownBox"); } 

} 
+0

Merci pour la réponse, mais cela ne nécessite-t-il pas de lier la valeur dropdown dans chaque action? – TheGwa

+0

J'inclurais la SelectList dans le viewbag si nécessaire. –

Questions connexes