我不明白为什么我找不到任何清楚地解释如何使用 MVC 做到这一点的东西。似乎是一个非常常规的问题:
我有三张桌子:
PackageName: PackageNameID,PackageName
Food: FoodID,Food
PackageContent: PackageContentID, PackageNameID, FoodID, Qty
该应用程序应该描述食品包装。例如,一个名为“A”的包可能包含 4 个洋葱和 3 个辣椒。另一个包裹“B”可能包含 2 个面包卷和 2 个洋葱。
目前我有一个收集数据的自定义视图模型(“PackageNameModel”):
public ViewResult Index() {
var viewModel =
from pn in db.PackageNames
from pc in db.PackageContents
.Where(p => p.PackageNameID == pn.PackageNameID).DefaultIfEmpty()
from f in db.Foods
.Where(f => f.FoodID == pc.FoodID).DefaultIfEmpty()
select new PackageFoodModel { PackageName = pn, PackageContent = pc, Food = f };
return View( viewModel );
}
这会正确返回数据,但我该怎么做才能使视图实际上是对应用程序有用的视图?
在我看来使用这个:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.PackageName.PackageName1 ) ,
@Html.DisplayFor(modelItem => item.Food.Food1)=@Html.DisplayFor(modelItem => item.PackageContent.Qty)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.PackageName.PackageNameID }) |
@Html.ActionLink("Details", "Details", new { id = item.PackageName.PackageNameID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.PackageName.PackageNameID })
</td>
</tr>
}
我能够显示以下内容:
- A , Onions=4 Edit | Details | Delete
- A , Peppers=3 Edit | Details | Delete
- B , Rolls=2 Edit | Details | Delete
- B , Onions=2 Edit | Details | Delete
这不是很有用。我想要做的是显示如下内容:
- A (Onions=4,Peppers=3) Edit | Details | Delete
- B (Rolls=2,Onions=2) Edit | Details | Delete
最后,导航到“编辑”操作后的下一页将为包装提供可编辑的名称以及所有可用食品的表格和相邻的数量框,以便可以更新每个包装中的食品/数量。
谁能解释这是如何在 MVC 框架中完成的?我在网上/书籍中看到的所有教程都处理更简单的数据。谁能指出一些处理此类问题的示例代码/教程?
提前致谢!