2012-03-06 2 views
2

여러 가지 드롭 다운 메뉴 예제를 살펴본 후 여기에 제 상황이 있습니다.MVC 3의 드롭 다운 목록

내가 데이터베이스 테이블이 있습니다 내 등록 뷰 모델에서 Companies

을, 나는 다음과 같습니다 내 등록 관점에서

public int? CompanyId { get; set; } (public IEnumerable<Company> Companies { get; set; }이 변경에 대한 생각을), 사용자가 선택할 수있는 기업 그는 일한다. 나는 사용자가 선택할 수있는 데이터베이스가있는 회사의 드롭 다운 목록을 갖고 싶습니다.

나는 회사 리포지토리를 가지고 모든 회사를 확보하고 IEnumerable으로 돌아갑니다.

어떻게 접근합니까? 뷰 모델 또는 컨트롤러에서이 작업을 수행하는 것이 더 좋을까요?

답변

4

모델에 두 개의 속성을 선언하십시오. 보기

@Html.LabelFor(x => x.CompanyId) 
@Html.DropDownListFor(x => x.CompanyId, Model.Companies) 

이 당신의 회사 ID 속성을 설정하고 옵션 값으로 회사를 사용하는 선택 목록을 만듭니다에서 다음

public int? CompanyId { get; set; } 
public IEnumerable<SelectListItem> Companies { get; set; } 

.

쉽게 선택 목록을 만들 수 있습니다. 나는

Companies.AddRange(
    aListOfCompanies.Select(x => 
    new SelectListItem { Text = x.CompanyName, Value = x.CompanyId.ToString() })); 
+0

어디서'SelectList'를 넣을까요? –

+0

@ edmastermind29,'Companies' 속성? 그것은 당신의 모델에있을 것입니다. 모델의 생성자 또는 컨트롤러에서 값을 설정할 수 있습니다. – Brandon

+0

@ edmastermind29 또한 AjaxDropdown (http://awesome.codeplex.com)을 사용할 수도 있습니다.이 방법을 사용하면 SelectMenu에서만 SelectListItem의 목록을 id에 넣지 않아도됩니다 (항목 목록이 아약스) – Omu

0

이 (GetCompanies()) 그것은 당신의 ViewModel 개체를 반환 무엇과 selectList의 객체를 만드는 당신의 컨트롤러에서 다음 처럼 뷰 모델의 방법을 만들기 뭔가 같은 것 같은데요. 그러면 viewBag 또는 모델의 속성을 통해 뷰에 전달할 수 있습니다.