2011-09-08 5 views
0

나는 ViewModel 클래스 'SomeDataViewMode'에 'School'객체로 채워진 'List Schools'객체가 있습니다. 학교 물품에는 학교 ID와 이름 속성이 있습니다.@ Html.DropDownListFor 컬렉션 문제가있는 클래스

@Html.DropDownListFor(c => c.ScoolId, new SelectList(Model.Schools), "Select some school") 

을하지만 내가 가진 모든이와 드롭 다운 목록입니다 : 내보기 (면도기) I에서 추가

MyProject.Domain.Entities.School 

어떻게 값을 얻을?

답변

1

당신은 School 클래스에 ToString() 방법을 추가하거나 Text들과 Value들과 SelectListItem의를 만들 수 LINQ를 사용해야 중 하나

new SelectList(Model.Schools.Select(s => new SelectListItem { Text = s.Name, Value = s.SchoolId })) 

편집을 : 당신의 코드가 불필요하게 복잡하다.
당신은 당신이 가치에 사용 텍스트에 대한 어떤해야하는 학교 객체의 속성을 지정해야합니다

@Html.DropDownListFor(x => x.Schools, new SelectList(list, "SchoolId", "Name")) 
+0

내가 함께 노력을 '@ Html.DropDownListFor (새 selectList의 (Model.Schools.Select (S => 새로운 SelectListItem {텍스트 = s.Name, 값 = s.SchoolId})))) '를 호출합니다. 그러나 두 번째 매개 변수가 필요합니다. – 1110

+0

어떤 오류 메시지가 나타 납니까? – SLaks

+0

메서드 'DropDownListFor'에 대한 오버로드가 1 개의 인수를 사용합니다. 하지만 당신의 아이디어 덕분에 나는이 코드를 작동 시켰습니다. @ { List list = Model.Schools; var schools = 새 SelectList (목록, "SchoolId", "이름"); } @ Html.DropDownListFor (x => x.Schools, @items) – 1110

0

쓸 수 있습니다. 예를 들어, School 모델 NameId 속성이 있다면 :

@Html.DropDownListFor(
    c => c.ScoolId, 
    new SelectList(Model.Schools, "Id", "Name"), 
    "Select some school" 
)