2014-03-27 58 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格(所有genreId = 1的项目) – Danny

+0

您可以发布您的型号代码吗? –

回答

0

的ID(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;和counter2到genreTab ID,这不是问题。 – Danny

+0

我试图避免没有relant代码。我的错。我通过viewBag = ViewBag.getGener = db.TaKeAways.Select(x => x.genre.GenreName).Distinct(); 和id使用计数器++ – 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> 
} 

另外,如果你被迫平收到您的物品,如您的OP,就像我讨厌在视图中做这样的代码,使用LINQ to组他们在您的观点可能是罪恶中的较小者:

@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

页面正在使用:@model IEnumerable <_11_3_14.Models.TakeAway>,因此Model.Genres是不可能的 – Danny

+0

您是否可以不更新视图的模型和控制器来为您提供如此分组的模型? –

+0

我不知道如何。 – Danny