Asp.net mvc 4 如何列出按类别分组的项目?
我正在努力学习MVC,并找到一些障碍 我试图找到一种可维护的方式来显示按类别标题划分的项目列表。例如: 主菜 汤Asp.net mvc 4 如何列出按类别分组的项目?,asp.net-mvc-4,Asp.net Mvc 4,我正在努力学习MVC,并找到一些障碍 我试图找到一种可维护的方式来显示按类别标题划分的项目列表。例如: 主菜 汤 面包 主要 鸡肉 牛肉 素食者 沙漠 蛋糕 冰激凌 类别和项目是独立的模型,项目模型保存类别的ID 我想把这些网页交给熟悉HTML但不熟悉ASP的人。出于这个原因,我希望将嵌入页面中的代码保持在最低限度。这是到目前为止我所拥有的最好的,但是我不喜欢为每个项目使用和检查一个变量 @{string categoryName = null;} @foreach (var item in M
面包 主要 鸡肉
牛肉
素食者 沙漠 蛋糕
冰激凌 类别和项目是独立的模型,项目模型保存类别的ID 我想把这些网页交给熟悉HTML但不熟悉ASP的人。出于这个原因,我希望将嵌入页面中的代码保持在最低限度。这是到目前为止我所拥有的最好的,但是我不喜欢为每个项目使用和检查一个变量
@{string categoryName = null;}
@foreach (var item in Model) {
if (item.CategoryName != categoryName)
{
categoryName = item.CategoryName;
<tr>
<td colspan="5">@Html.DisplayFor(modelItem => categoryName)</td>
</tr>
}
<tr><!-- Display item here --></tr>
}
@{string categoryName=null;}
@foreach(模型中的var项目){
如果(item.CategoryName!=CategoryName)
{
categoryName=item.categoryName;
@DisplayFor(modelItem=>categoryName)
}
}
是否有一种嵌套页面的方法,这样我就可以创建一个循环遍历每个类别的父页面,并调用一个循环遍历该类别中的项目的子页面?例如,类似于:
@foreach (var item in Model) {
<tr>
<td colspan="5">@Html.DisplayFor(modelItem => item.Name)</td>
</tr>
@RenderChildren(item.Children);
}
@foreach(模型中的变量项){
@DisplayFor(modelItem=>item.Name)
@RenderChildren(项目.子项);
}
我建议返回一个视图模型,使用GroupBy
对项目进行预分组:
return View(TheModel.GroupBy(item => item.Category).ToArray());
此视图可以迭代组,显示每个(键
)的标题,并将项目集合发送到局部视图:
@model IEnumerable<IGrouping<string, MyModel>>
@foreach (var grp in Model)
{
<tr>
<th colspan="5">@grp.Key</th>
</tr>
@Html.Partial("Meals", grp.ToArray())
}
@model IEnumerable<MyModel>
@foreach (var item in Model)
{
<tr>
<td>@Model.Name</td>
</tr>
}