Рефакторинг Html.DropDownList источника данных asp.net mvc - PullRequest
1 голос
/ 20 февраля 2010

Я использую Linq To Sql, чтобы заполнить Html.DropDownLists в нескольких различных формах с кодом, подобным;

ViewData["EmployeeId"] = new SelectList(EmployeeRepository.Employees.ToList(), 
                                       "EmployeeId", "FullName");

Это все работает просто отлично, но у меня есть тот же код во всем контроллере для get ActionResult, затем то же самое в посте ActionResult. Кажется, не имеет значения, находится ли это в модели или в контроллере, его все еще нужно отправить в представление, и я все равно заканчиваю тем, что повторяю этот код. Таким образом, в соответствии с мантрой «Не повторяй себя», есть ли у кого-нибудь какие-либо идеи о том, как содержать / реорганизовать этот код в одном месте. Было бы лучше сделать все это в представлении? Спасибо всем участникам SO.

1 Ответ

1 голос
/ 20 февраля 2010

Один из способов решить эту проблему - создать свойство SelectList (или List) в вашей модели. Когда вы создаете новую модель, бросьте своих сотрудников в это свойство:

 EmployeeRepository.Employees.Select(e => new SelectListItem 
     {Text=e.FullName,Value=e.EmployeeId}).ToList()

Теперь, на ваш взгляд, ссылка на недвижимость

Model.EmployeeList //the List<SelectListItem> containing your employees

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

НТН

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