2011-08-28 11 views
1

MVC 3을 가지고 놀고 있었고 드롭 다운리스트를 채우고있었습니다. 뷰 모델을 사용하는 것이 좋습니다 몇 가지 예제를 온라인에서 보았습니다, 그래서 여기에 내 첫 시도입니다. 내 코드는 작동하는 것처럼 보이지만 아무에게도 이것이 올바른 방법인지 알려 줄 수 있습니까?내 첫 번째 모델보기

내 모델 :

public class ContactGP 
{ 
    public int TeamID { get; set; } 

    [Required(ErrorMessage = "Please select a Team Name")] 
    [DataType(DataType.Text)] 
    [DisplayName("Team Name")] 
    public string TeamName { get; set; } 
} 

내보기 모델 :

public class ContactGPViewModel 
{ 
    public string SelectedTeamID { get; set; } 
    public IEnumerable<Team> Teams { get; set; } 
} 

내 컨트롤러 :

public IEnumerable<Team> PopulateTeamsDropDownList() 
    { 
     IEnumerable<Team> lstTeams = _Base.DataRepository.GetTeams(); 

     return lstTeams; 
    } 

    public ActionResult ContactGP() 
    { 
     var model = new ContactGPViewModel 
     { 
      Teams = PopulateTeamsDropDownList() 
     }; 

     return View(model); 
    } 

그리고 내보기 :

<p> 
    @Html.DropDownListFor(
     x => x.SelectedTeamID, 
     new SelectList(Model.Teams, "TeamID", "TeamName") 
    ) 
</p> 

답변

2

코드가 올바른 것처럼 보입니다. 뷰에 필요한 속성이 포함 된 뷰 모델을 정의하고 컨트롤러에 채우고 강력하게 형식화 된 뷰로 전달했습니다.

은 내가 PopulateTeamsDropDownList 방법 내부의 다음 줄에 불과 사소한 발언이 :

_Base.DataRepository.GetTeams(); 

난 당신이 인터페이스 (또는 추상 클래스)이 저장소를 추상화 한 희망을 일부 구체적인 구현을 주입하기 위해 DI를 사용 귀하의 컨트롤러에. 이렇게하면 컨트롤러와 데이터에 액세스하는 방식 간의 결합이 약화되고 응용 프로그램의 여러 계층을 개별적으로 테스트하는 작업이 단순 해집니다.

+0

대단히 감사합니다. Darin! – user517406