2014-03-27 3 views
0

ID로 항목을 그룹화하고 모든 항목을 하나의 div에 넣으려고합니다. div에 각각 무엇을 넣었습니까? 요컨대해당 항목의 ID에 따라 그룹화

<div class="tab-content" id="myTabContent"> 

    @foreach (var item in Model) 
    { 

     <div class="tab-pane fade active in" id="genreTab "> 
      if (item.GenreId == 1) 
      { 

      @item.GenreId 

      } 
     </div> 
     if (item.GenreId == 2) 
     { 
      <div class="tab-pane fade " style="background-color:red;" id="genreTab "> 
       @item.GenreId 

      </div> 

     } 


    } 
</div> 

클래스는 :

public class Genre 
{ 
    public int GenreId { get; set; } 

    public string GenreName { get; set; } 
    public List<TakeAway> TakeAwys { get; set; } 
} 

public class TakeAway 
{ 
    public int TakeAwayId { get; set; } 

    public int GenreId { get; set; } 
    public virtual Genre genre { get; set; } 
} 
+0

무엇이 질문입니까? – Neel

+0

1 div (모두 genreId = 1 ... 인 항목)에 모두 그룹화 할 수 있습니다. – Danny

+0

모델 코드를 게시 할 수 있습니까? –

답변

0

이드 (genreTab)가 고유해야한다. 하나의 div에서 모두를 원하면 먼저 주문해야합니다.

모두 정렬

, 이렇게 :

var lastId = 0; 

<div class="tab-pane fade " style="background-color:red;" id="[email protected]"> 
@foreach (var item in Model) 
{ 
    if (@item.GenreId != lastId) 
    { 
     </div><div class="tab-pane fade " style="background-color:red;" id="[email protected]"> 
    } 
    @item.GenreId 

    lastId = @item.GenreId; 
} 
</div> 

구문이 잘못 될 수있다, 나는 면도칼 구문을 모른다.

+0

편집 : int counter2 = 0; 그리고 gen2Tab ID에 counter2, 이것은 문제가되지 않습니다. – Danny

+0

재발 코드를 피하려고했습니다. 내 실수. viewBag = ViewBag.getGener = db.TaKeAways.Select (x => x.genre.GenreName)를 통해 탭을 가져옵니다 .Distinct(); 그리고이 번호는 카운터 ++ – Danny

1

가능하면 가장 좋은 방법은 항목 대신 장르를 반복하는 것입니다. 장르별로 모델의 항목을 그룹화하여이 작업을 수행 할 수 있습니다.

그런 다음 현재 장르 내에서 항목의 내부 루프를 사용하여보기에서 장르를 반복하십시오. 이 같은

뭔가 :

@foreach (var genre in Model.Genres) 
{ 
    <div class="tab-pane fade active in" id="genreTab "> 
    @foreach (var item in genre.Items) 
    { 
     @item.SomeValueHere 
    } 
    </div> 
} 

또는, 당신은 내가보기에이 같은 코드를 일을 싫어로 그룹에 LINQ를 사용하여, 당신의 OP와 같은 평면을 많이 항목을받을 강요하는 경우 보기가 악의 가벼운 것일 수 있습니다.

@foreach (var genre in Model.GroupBy(i => i.GenreId).Select(i => i.Key)) 
{ 
    var innerGenre = genre; //to prevent modifed closure 
    <div class="tab-pane fade active in" id="genreTab "> 
    @foreach (var item in Model.Where(i => i.GenreId == innerGenre)) 
    { 
     @item.SomeValueHere 
    } 
    </div> 
} 
+0

을 사용하여 페이지가 사용하고 있습니다 : @ 모델 ↓ IEnumerable <_11_3_14.Models.TakeAway>이므로 Model.Genres는 불가능합니다 – Danny

+0

보기의 모델과 컨트롤러를 업데이트하여 이처럼 그룹화 된 모델을 제공 할 수 없습니까? –

+0

잘 모르겠습니다. – Danny

관련 문제