2010-12-08 35 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找到了易用性這提供了完全可以接受一個乾淨的方式來實現。