2010-02-26 8 views
6

나는 많은 드롭 다운 목록과 다중 선택 목록을 가진 ASP.NET MVC 애플리케이션을 가지고 있습니다. 본질적으로 많은 옵션 목록.ASP.NET MVC 모델 대 선택 목록 용 ViewData

내 질문은; 이 목록을 모델의 일부로보기에 전달하거나 ViewData로 전달하는 것이 더 낫습니다.

저는 현재 모델에서 모델을 필요로하지 않으므로 ViewData로 전달하고 있습니다. 모델에서 돌아 다니기 위해 부피가 큰 것처럼 보입니다 (실제로 필요한 모든 항목 또는 항목을 가져옵니다). 단점이라면 ViewData는 View에서 캐스팅해야합니다. View는 강력한 형식의 모델만큼 좋지 않습니다.

여기에 모범 사례가 있습니까? 이 중 하나에 대한 장단점에 대한 제안조차도 인정 될 것입니다.

답변

6

ViewModels을 사용하여 해당 데이터를 전달하는 것이 좋습니다. ViewData를 "magic strings"과 함께 사용하는 것은 오류가 발생하기 쉽고 나는 "magic strings"를 기억하는 대신 intellisense를 사용하는 것을 선호합니다. 컨트롤러에 SelectLists를 만들 필요가 없습니다. 일부 IEnumerable을 사용하고보기에서 MvcContrib의 ToSelectList 확장 메서드를 사용하십시오.

+1

+1 관례 상 문제를 해결하기 위해 최선을 다했습니다. 인텔리 센스가 환상적이기 때문에 당신이 언급 한 것뿐만 아니라, 진짜 키커는 항상 마법의 끈이 잘 컴파일된다는 것입니다. 그런 다음 런타임에 폭파 할 수있는 기회를 갖게됩니다. 아야 ... 강력하게 형식화 된 것들은 컴파일 할 때 오류가 날아 오기 때문에 오류를 훨씬 쉽게 감지 할 수 있습니다. –

-1

뷰에 전달할 항목이 하나 뿐인 경우 ViewData를 사용하는 경향이 있습니다. 따라서 여러 객체를 보내고 여러 개의 드롭 다운을 채워야하는 경우 뷰 모델을 만들 것입니다. 뷰 모델에 SelectList 객체가있는 경우 도메인 모델에서 MVC dll에 대한 참조가 필요하지 않도록 웹 응용 프로그램 프로젝트에서 해당 뷰 모델을 만들 수도 있습니다.

+0

그리고 이것은 좋은 것입니까? – Lankymart