ASP.NET MVC3 Razor在模型中查询(foreach中的foreach)
我在View中遇到了一个问题,从不同的实体中提取数据。 基本上我有一个桥接实体CategoryProduct,它将Category和Product数据汇集在一起。 我想最终展示的是产品清单以及每种产品 – 它们的类别。 然而,我完全停留在如何使最后一部分 – 显示类别 – 发生。
这是我模型的代码 –
public class Product { public int ProductId { get; set; } public string Title { get; set; } public virtual ICollection CategoryProducts { get; set; } } public class CategoryProduct { public int CategoryProductID { get; set; } public int CategoryId { get; set; } public int ProductId { get; set; } public virtual Product Product { get; set; } public virtual Category Category { get; set; } } public class Category { public int CategoryId { get; set; } public string Title { get; set; } public virtual ICollection CategoryProducts { get; set; } }
我的控制器非常简单,它只是将桥接实体推送到视图:
public ActionResult Index() { return View(db.CategoryProducts.ToList()); }
最后,我的视图显示了产品和类别,但现在它只是为同一产品创建了额外的行,如果它有不同的类别,例如产品1:类别1,产品1:类别2等等。 我想去的地方是产品1:第1类,第2类。
@model IEnumerable Index
Title Category @foreach (var item in Model) { @Html.DisplayFor(modelItem => item.Product.Title) @foreach (var categories in item) { @Html.DisplayFor(modelItem => item.Why.Title) } }
错误:编译器错误消息:CS1579:foreach语句无法对“ProductsCode.Models.CategoryProduct”类型的变量进行操作,因为“ProductsCode.Models.CategoryProduct”不包含“GetEnumerator”的公共定义
编辑:添加了另一个foreach循环和错误。
为什么你不能只改变这样的viewmodel
public class MyProduct { public int ProductId { get; set; } public string Title { get; set; } public virtual ICollection CategoryList { get; set; } }
并查看
@model IEnumerable Index
Product @Html.DisplayFor(modelItem => item.ProductId) Categories for Product @foreach (var item in Model.CategoryList) { @Html.DisplayFor(modelItem => item.Title) @Html.DisplayFor(modelItem => item.CategoryId) }
- 多语言网站:Azure部署的行为与localhost不同
- 如何告诉Web API / Castle Windsor路由引擎在我的存储库中使用不同的数据库实例?
- 我可以手动创建Controller实例,然后以用户身份运行它吗?
- 如果错误已经逐字段显示,如何不显示ASP MVC ValidationSummary?
- 如何使用signalR向特定用户发送消息
- Fluentvalidation – 将参数传递给集合validation器
- NamedScopes Ninject绑定和异步(线程)
- 如何在ASP.NET MVC视图中对数据进行分组?
- System.Speech.Synthesis在2012 R2上挂起了高CPU