2010-02-20 2 views
1

Linq to Sql을 사용하여 Html.DropDownLists를 다음과 같은 코드로 몇 가지 다른 형식으로 채 웁니다.Refactor Html.DropDownList 데이터 소스 asp.net mvc

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

이 모두 잘 작동하지만 모든 얻을 ActionResult에 대한 컨트롤러, 포스트 ActionResult에서 그 같은 일을 통해이 같은 코드가 있습니다. 이것이 Model이나 Controller에 있다면 여전히 View로 보내 져야만하는 것 같지 않습니다. 그리고 저는 여전히이 코드를 반복합니다. 그래서 "반복해서 쓰지 마라"라는 명언은 누구나이 코드를 한 곳에서/리팩터링하는 법에 대한 아이디어를 가지고 있습니다. 보기에서이 모든 것을 수행하는 것이 더 좋을까요? SO의 모든 참여자에게 감사드립니다.

답변

1

해결 방법 중 하나는 모델에서 SelectList (또는 List) 속성을 만드는 것입니다. 당신의보기 참조,

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

지금은 사용하기 때문에 당신은 당신의 컨트롤러에서이 속성을 필요가 없습니다

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

속성을 : 당신이 모델을 새로하는 경우,이 속성에 직원 캐스팅 선택할 수있는 옵션을 사용자에게 제공하십시오. 사용자 선택의 지표는 아닙니다.

hth

+0

로버트 감사합니다. 저는 현재이 방법보다 훨씬 나은 솔루션을 원합니다. 건배. – hankasu

관련 문제