我正在尝试通过id将剃须刀视图中的项目分组并将它们全部放在一个div中 我做了什么把每个人放在一个div。
<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 :(得分: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在你的视图中将它们分组可能是罪恶中的较小者:
@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>
}
答案 1 :(得分:0)
ID(genreTab)应该是唯一的。如果你想要一个div中的所有,你必须先订购它们。
全部订购后,请执行以下操作:
var lastId = 0;
<div class="tab-pane fade " style="background-color:red;" id="genreTab-@item.GenreId">
@foreach (var item in Model)
{
if (@item.GenreId != lastId)
{
</div><div class="tab-pane fade " style="background-color:red;" id="genreTab-@item.GenreId">
}
@item.GenreId
lastId = @item.GenreId;
}
</div>
语法可能有误,我不知道剃刀语法。