2010-11-09 6 views
1

Héritage partiel ou de modèle

Actuellement, je vais avec l'héritage du modèle, en utilisant un ActionFilter qui remplit l'utilisateur dans mon modèle de base, et l'afficher: (en utilisant un DisplayTemplate)

<% = Html.DisplayFor(x => x.CurrentUser) %> 

Qu'en est-il en utilisant un PartialView, appelé la MasterPage utilisant

<% = Html.Action("UserName", "BaseController") %> 

Cela pourrait-il simplifier un peu les applications de petite à moyenne taille (20 modèles)?

Répondre

2

Je pense BaseViewModels sont des monstres qui ne devraient pas être autorisés à exister. Je ne peux pas penser à un scénario où ils ne sont pas gonflés avec toutes sortes de logique superflue dont toutes les pages n'ont pas besoin.

RenderAction() a parcouru un long chemin depuis MVC 1 et enfin obtenir son soutien de mise en cache de sortie complète dans MVC 3. Parce que vous gagnez un tas de composibility avec RenderAction que vous ne recevez pas un ViewModelBase que je préfère.

Considérons également que ViewModelBases a également besoin de ViewMasterModelBases pour fonctionner, ce qui entraîne une logique encore plus étroitement couplée qui n'est pas facilement permutée.

1

Si vous avez un ViewModel de base (je pense que c'est ce que vous faisiez référence) et à ne pas l'esprit lui attribuant à chaque fois ou en utilisant un attribut de méthode, voir ici ... BaseViewModel stuff

Personnellement, je wouldnt esprit ont un méthode de contrôleur qui renvoie une vue partielle contenant les informations de l'utilisateur. Et puis vous avez juste l'appel de méthode dans votre Site.master où vous voulez que l'utilisateur affiché Markup ...

<% Html.RenderAction("UserInfo", "Home"); %>