Как работать с моделью с большим количеством выпадающих списков в Asp.net MVC - PullRequest
1 голос
/ 09 декабря 2010

У меня есть модель с большим количеством внешних ключей. Прямо сейчас я заполняю данные представления:

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

1 Ответ

0 голосов
/ 09 декабря 2010

Раскрывающиеся списки в MVC могут быть болезненными, если вы полны решимости придерживаться "чистых" практик и архитектуры. Для собственного здравого смысла я склонен опираться на следующую технику, описанную уважаемым Майком Хэдлоу: Заполнение раскрывающихся списков в ASP.NET MVC .

Этот метод действительно нарушает доступ к данным из представления ... но он реализован чистым способом, который, по моему мнению, вполне приемлем для удобства использования этого предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...