2012-02-22 3 views
0

현재 색인보기에서 상위/아티스트 목록을 표시하는보기 모델을 사용하고 있으며 목록을 표시하기 위해 색인/5로 리디렉션되는 ActionLink가 포함되어 있습니다 (앨범)의 전체 목록을 보여주는 동시에모든 상위 항목의 모든 하위 항목을 단일보기로 표시

이제 인덱스로 라우팅 할 때 모든 부모에 대해 모든 하위 항목이로드되므로 중첩 된 @foreach를 사용하는 것이 좋습니다.

간단해야하며이 예제를 가능한 한 단순하게 유지하려고합니다 (부분보기 등을 피하는). 그러나 비교 자습서를 찾거나 질문에 답을 찾을 수 없었습니다. 나는 틀린 용어를 찾고있다!).

내가 올바른 방향으로 가고 있는지 여부에 대한 도움은 매우 감사하겠습니다.

컨트롤러

// GET: /ArtistsTest/ 

    public ActionResult Index(Int32? id) 
    { 
     var viewModel = new TestViewModel(); 
     viewModel.Artists = db.Artists 
      .Include(a => a.Albums); 

     if (id != null) 
     { 
      ViewBag.ArtistID = id.Value; 
      viewModel.Albums = viewModel.Artists.Where(a => a.ArtistID == id.Value).Single().Albums; 
     } 

     return View(viewModel); 
    } 

뷰 :

@foreach (var artist in Model.Artists) 
{ 
    <p> 
     @Html.DisplayFor(modelItem => artist.ArtistID) 
     @Html.DisplayFor(modelItem => artist.ArtistName) 
     @Html.ActionLink("Select", "Index", new { id = artist.ArtistID }) 
    </p> 
} 
<br /> 
@if (Model.Albums != null) 
{ 
    <p> 
     Albums: 
     @foreach (var album in Model.Albums) 
     { 
      <p> 
       @Html.DisplayFor(albumItem => album.AlbumName) 
      </p> 
     } 
    </p> 
} 

답변

0

보기 :

@foreach (var artist in Model.Artists) 
{ 
    <p> 
     @Html.DisplayFor(modelItem => artist.ArtistID) 
     @Html.DisplayFor(modelItem => artist.ArtistName) 
     @Html.ActionLink("Select", "Index", new { id = artist.ArtistID }) 

     @foreach(var album in artist.Albums){ 
      <p> 
       @Html.DisplayFor(albumItem => album.AlbumName) 
      </p> 
     } 
    </p> 
} 

컨트롤러 :

완벽
public ActionResult Index() 
{ 
    var viewModel = new TestViewModel(); 
    viewModel.Artists = db.Artists.Include(a => a.Albums); 

    return View(viewModel); 
} 
+0

. 대단히 감사합니다. – jimwinz

관련 문제