2009-08-24 2 views
2

si j'ai une page maître qui se lie à ObjectA, puis une vue qui se lie à ObjectB, comment cela fonctionne (ou fonctionne-t-il du tout) dans asp.net mvc .asp.net mvc voir avec masterpage liaison avec différents modèles

page maître peut avoir:

Inherits="System.Web.Mvc.ViewMasterPage<CalendarEvent[]>" %> 

et l'un des point de vue pourrait avoir:

Inherits="System.Web.Mvc.ViewPage<Tournament[]>" %> 

que feriez-vous passer dans la vue du contrôleur car il y a 2 modèles dans ce cas, vous sont liés à?

Est-ce une mauvaise pratique d'avoir un objet de liaison dans la page maître?

Répondre

3

Eh bien, vous pouvez définir un conteneur abstrait qui contient ObjectA:

public class ModelContainer 
{ 
    public ObjectA ObjectA { get; set; } 
} 

et ont tous vos points de vue héritent de cette classe et ajouter leurs propres données:

public class SomeViewContainer : ModelContainer 
{ 
    public ObjectB ObjectB { get; set; } 
} 

Le maître La page peut alors accéder à la propriété ObjectA du modèle, tandis que les vues individuelles peuvent ignorer cette propriété particulière et accéder aux données dont elles ont elles-mêmes besoin.

Je ne peux pas dire que j'aime particulièrement cette approche, cependant. S'il y avait un moyen d'éviter d'avoir besoin d'un modèle dans la page maquette, je préfèrerais le faire.