2010-12-08 84 views
1

我有一个很多外键的模型。现在,我正在填充查看数据:如何处理在Asp.net中有很多下拉列表的模型mvc

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

我真的不喜欢这种方法。首先,我应该给这个领域命名同样的东西,并且相信它会被存储在模型中。我真的不明白这是如何工作的,但有点令人担忧。

其次,我的代码现在有点乱。

//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");' 

另一个问题是我看不到我怎么能测试这个。我已经编写了一个存储库方法,它只将来自下拉列表的id值映射到各自的EF对象中。

其他人如何处理这个问题?我确实在几个地方设置了这些下拉菜单,所以我考虑将它们放在控制器方法中。

想法?

P.S.这种想法:http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx

回答

0

如果你是确定坚持“纯粹”的做法和架构,MVC中的下拉列表可能是痛苦的。为了我自己的理智,我倾向于采用以下受尊敬的Mike Hadlow所述的技术:Populating Drop Down Lists in ASP.NET MVC

这种方法确实违反从视图中的数据访问...但它在我persoanaly找到了易用性这提供了完全可以接受一个干净的方式来实现。