ビューで、さまざまなエンティティからデータを取得する際に問題が発生しています。基本的に、Category と Product のデータをまとめるブリッジ エンティティ CategoryProduct があります。最終的に表示したいのは、製品のリストと、それらの各製品のカテゴリです。しかし、私はその最後の部分 - 表示カテゴリ - を実現する方法に完全に行き詰まっています。
ここに私のモデルのコードがあります -
public class Product
{
public int ProductId { get; set; }
public string Title { get; set; }
public virtual ICollection<CategoryProduct> 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<CategoryProduct> CategoryProducts { get; set; }
}
私のコントローラーは非常に単純で、そのブリッジングエンティティをビューにプッシュするだけです:
public ActionResult Index()
{
return View(db.CategoryProducts.ToList());
}
最後に、私のビューには Products と Categories が表示されますが、現在、別のカテゴリ (たとえば、Product 1: Category 1、Product 1: Category 2 など) がある場合、同じ製品に対して余分な行が作成されています。そして、私が到達したいのは、製品 1: カテゴリー 1、カテゴリー 2 です。
@model IEnumerable<ProductsCode.Models.CategoryProduct>
<h2>Index</h2>
<table>
<tr>
<th>Title</th>
<th>Category</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Product.Title)
</td>
<td>
@foreach (var categories in item)
{
@Html.DisplayFor(modelItem => item.Why.Title)
}
</td>
</tr>
}
</table>
エラー出力: コンパイラ エラー メッセージ: CS1579: 'ProductsCode.Models.CategoryProduct' に 'GetEnumerator' のパブリック定義が含まれていないため、foreach ステートメントは 'ProductsCode.Models.CategoryProduct' 型の変数を操作できません
編集: 他の foreach ループとエラーを追加しました。