2009-04-07 6 views
1

Lors d'un projet précédent, j'ai utilisé l'héritage racine unique pour mon MVC viewModel.ViewModel Hiérarchie d'héritage racine unique ou injection ViewData avec FilterAttributes

Tout a fonctionné et était efficace pour donner des données au site maître, mais a été un peu pénible dans les actions du contrôleur. Pour construire correctement les données de la vue racine à chaque fois, nous avons dû remplacer (en utilisant la méthode de masquage) Controller.View().

Je suis tenté d'essayer d'attribuer l'attribut ViewData cette fois, et je me demandais si quelqu'un connaissait des pièges à cette approche.

Cette technique implique de laisser la méthode d'action définir ViewData.Model, puis d'utiliser un attribut pour définir un élément ViewData pour les données destinées à être utilisées par le maître de site. Je peux fortement taper le retour avec les méthodes d'extension ViewDataDictionary.

Toute aide est grandement appréciée.

MISE À JOUR: Je descends l'approche d'injection de filtre et il se sent plus propre que les autres moyens. beaucoup plus propre. Mon conteneur IoC Container a été injecté dans les filtres pour leur fournir les fournisseurs nécessaires à la création de données communes à l'échelle du site. Bien que je doive écrire un filtre ET une méthode auxiliaire pour chaque "chose" que je veux être commun, cela libère la construction des données du modèle dans les actions du contrôleur.

Quelqu'un d'autre a-t-il aussi emprunté ce chemin?

MISE À JOUR 2: Yay! Je pense que j'ai trouvé Stackoverflow

+0

Que diriez-vous du code? –

Répondre

1

Qu'en est-il de l'utilisation d'un contrôleur de base avec les données de vue communes injectées dans OnActionExecuted lorsque le résultat est un ViewResult. De cette façon, vous n'avez besoin que d'implémenter la récupération de ces données en un seul endroit - peut-être, couplé avec vos extensions ViewDataDictionary pour vous permettre d'y accéder d'une manière fortement typée.

+0

Bonne approche! Je n'y ai pas pensé. Je l'ai récemment lu dans un des 30 points d'extensibilité de MVC que je ne connaissais pas. Merci d'y penser! – CVertex

Questions connexes