Asp.Net MVC mise en page et une vue partielle

considérons deux points de vue qui utilisent la même structure, composée de:

  • Une colonne de gauche contenant un "corps" (qui est rempli différemment par les deux points de vue)
  • Une colonne de droite qui affiche les informations générales (transmis par l'intermédiaire du modèle)

Au lieu de définir la partie droite deux fois, je me demandais si je pouvais créer un PartialView faire un lien directement à partir de la mise en page.

Le problème est que les vues partielles implicitement héritent de leurs modèles de la vue qui est en cours de rendu. Et depuis chaque point de vue a son propre modèle, je me retrouve avec un type de modèle de décalage dans la vue partielle.

D'ici, je vois deux solutions:

  • Je pouvais insérer la partie commune de la vue modèle dans le ViewBag. Malheureusement, cela signifie que chaque point de vue qui utilise cette disposition a pour mettre en œuvre cette "convention", mais rien avertit le développeur à ce sujet au moment de la compilation...
  • Je pouvais utiliser le polymorphisme de faire de chaque modèle de vue hériter de la même classe de base (edit: ou interface) que les Vues Partielles utilise. Ce serait, dans une certaine mesure, mais pourrait augmenter de manière exponentielle dans la complexité dès que j'ai une deuxième vue partielle dans la même disposition.

Donc voici les questions:

  • Je suis bon avec les hypothèses ci-dessus?
  • Voyez-vous une autre possibilité?
  • Tout retour d'expérience sur ce point?

Merci beaucoup,
La TUBERCULOSE.

Vers 2017, vous pouvez également faire de la commune une partie de la propriété de chaque modèle, et de passer ensuite que le modèle à @Html.RenderPartial

OriginalL'auteur Tim Bourguignon | 2012-06-26