2010-03-24 7 views
1

Ceci est une question de liaison de modèle général applicable à MVC 1 & 2. Je me demande si MVC2 serait mieux pour cela, mais voici ma question:multiples classeurs modèles personnalisés pour un modèle dans ASP.NET MVC

J'ai un modèle assez complexe:

public interface IEvent 
    public int Id 
    public string Title 
    public List<EventContact> Contacts 
    public List<EventDatesLocations> DatesLocations 

public class EventDatesLocations 
    public int Id 
    public DateTime StartDate 
    public DateTime EndDate 
    public List<EventLocation> Locations 

J'ai un liant modèle personnalisé pour ma classe IEvent qui fait essentiellement toute la liaison pour IEvent. J'appelle le classeur modèle par défaut pour lier la liste Contacts, qui fonctionne bien.

Je suis prêt à commencer à essayer de lier les choses DatesLocations, mais je veux m'assurer que je fais les choses correctement. Dans l'ensemble, je ne suis pas sûr d'avoir tous les détails sur la liaison de modèle comprise. Serait-il préférable d'avoir plusieurs classeurs de modèle pour les listes au sein de IEvent ou juste avoir un classeur modèle IEvent (comme je le fais maintenant) qui appelle le classeur par défaut pour les listes dont il a besoin.

Comment les experts le font-ils? : P

+1

Je Je ne suis pas un expert en reliure de modèles, mais je ne pense pas qu'il y ait quelque chose qui nécessiterait un modèle de reliure personnalisé. Comment vous liez-vous à vos listes? Voici un article sur la façon dont le classeur par défaut les gère. http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx – Ryan

+0

@Ryan - Le principal facteur de motivation pour la liaison en utilisant un classeur de modèle personnalisé a été le fait que j'utilise une interface, IEvent comme objet d'événement principal. En utilisant le classeur par défaut, il m'a immédiatement indiqué qu'il ne pouvait pas créer une instance d'IEvent. Cela, et j'ai besoin de lier des propriétés spécifiques en fonction du type d'IEvent. J'utilise le classeur de modèle par défaut avec un dictionnaire de fournisseur de valeur apparié – Dan

Répondre

0

Jetez un coup d'œil à this question pour voir une liaison de modèle imbriquée. Retour à cette question, vous mentionnez que vous devez faire une liaison sur différentes implémentations d'IEvent, mais vous voulez ensuite lier des propriétés spécifiques en fonction du type qui implémente IEvent. Je dirais que c'est généralement mauvais. Pourquoi? Parce que vous essayez d'obtenir un classeur modèle en sachant à propos d'une interface en savoir plus sur les implémentations spécifiques de celui-ci. Si vous avez besoin de plusieurs classes pour implémenter IEvent (pour une raison quelconque), vous aurez probablement besoin de liants personnalisés pour chacun (si vous descendez cette route, bien que ce soit des types concrets, alors le classeur par défaut devrait fonctionner), ou vous besoin d'étendre l'interface IEvent pour inclure les propriétés que vous allez définir sur tous.

Rappelez-vous les interfaces sont là pour définir un contrat qui doit être mis en œuvre ... vous ne pouvez pas travailler avec des objets qui mettent en œuvre et vérifier les autres propriétés en fonction de quel type ils sont :-)

Questions connexes