2010-12-08 19 views
1

J'ai un modèle avec BEAUCOUP de clés étrangères. En ce moment, je remplis les données d'affichage:Comment gérer un modèle avec beaucoup de listes déroulantes dans Asp.net mvc

ViewData["fieldname"]=new selectlist(entityframeworkmodel.foreigntable.ToList(),"fieldkey","valuefield"); 

Je n'aime vraiment pas cette approche. D'une part, je suis supposé nommer simplement le champ la même chose et croire qu'il sera stocké dans le modèle. Je ne comprends pas vraiment comment cela fonctionne mais c'est un peu inquiétant. Deuxièmement, mon code est maintenant un peu en désordre.

//Address drop downs 
ViewData["AddressType"] = new SelectList(ent.tblAddressTypes.ToList(), "AddressID", "AddressType"); 

     //Contact Drop Downs 
     ViewData["ContactTitle"] = new SelectList(ent.tblContactTitles.ToList(), "ContactTitleID", "Title"); 

     //Event 
     ViewData["EventStatus"] = new SelectList(ent.tblEventStatus.ToList(), "EventStatusID", "EventStatus"); 
     ViewData["EventType"] = new SelectList(ent.tblEventTypes.ToList(), "EventTypeID", "EventType"); 
     ViewData["Frequency"] = new SelectList(ent.tblFrequencies.ToList(), "FrequencyID", "Frequency"); 
     ViewData["cLanguage"] = new SelectList(ent.tblLanguages.ToList(), "LanguageID", "Language"); 
     ViewData["PrimaryAgeGroup"] = new SelectList(ent.tblAgeGroupSet.ToList(), "AgeGroupID", "AgeGroup"); 
     ViewData["PrimaryEntity"] = new SelectList(ent.tblEntities.ToList(), "EntityID", "Entity"); 
     ViewData["PrimaryEthnicGroup"] = new SelectList(ent.tblEthnicTargets.ToList(), "EthnicTargetID", "EthnicTarget"); 
     ViewData["PrimaryLanguage"] = new SelectList(ent.tblLanguages.ToList(), "LanguageID", "Language"); 
     ViewData["TargetGroup"] = new SelectList(ent.tblTargetGroups.ToList(), "TargetGroupID", "TargetGroup"); 
     ViewData["TargetFocus"] = new SelectList(ent.tblTargetGroups.ToList(), "TargetGroupID", "TargetGroup"); 
     ViewData["PrimaryUserGroup"] = new SelectList(ent.tblUserGroups.ToList(), "UserGroupID", "UserGroup"); 
     ViewData["PrimaryTargetGroup"] = new SelectList(ent.tblTargetGroups.ToList(), "TargetGroupID", "TargetGroup"); 
     ViewData["OS"] = new SelectList(ent.tblOutreachSpecialists.ToList(), "OSID", "LastName");' 

L'autre problème est que je ne vois pas comment je peux le tester. J'ai écrit une méthode de référentiel qui ne fait que mapper les valeurs id des listes déroulantes dans les objets EF respectifs.

Comment sont traitées les autres personnes? J'ai mis en place ces listes déroulantes dans quelques endroits, donc j'ai pensé à les mettre dans une méthode de contrôleur.

Pensées?

P.S. Type de réflexion à ce sujet: http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx

Répondre

0

Dérouler les listes dans MVC peut être pénible si vous êtes déterminé à coller avec des pratiques «pures» et architecure. Pour ma propre santé mentale, j'ai tendance à me pencher sur la technique suivante telle que décrite par le respecté Mike Hadlow: Populating Drop Down Lists in ASP.NET MVC.

Cette méthode ne violer l'accès aux données de la vue ... mais il est mis en œuvre de manière propre que je trouve toujours tout à fait acceptable pour la facilité d'utilisation que cela offre.