私は別のエンティティからデータを取得するビューで問題に遭遇しています。基本的に私はカテゴリーと商品のデータをまとめてまとめたブリッジングエンティティCategoryProductを持っています。私が最終的に表示したいのは、製品のリストとその製品のそれぞれのカテゴリです。しかし、私は完全にその最後の部分 - 表示カテゴリ - を実現させる方法に固執しています。ASP.NET MVC3 Razorモデル内でのクエリ(foreach内foreach)
は、ここに私のモデルのコードです -
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());
}
は最後に私の見解では、製品やカテゴリが表示されますが、右別のカテゴリを持つ場合は、同じ製品の余分な行を作成するだけです。製品1:カテゴリ1、製品1:カテゴリ2など。 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>
上
エラー出カテゴリー1、カテゴリー:コンパイラエラーメッセージ:CS1579:foreach文はタイプ「ProductsCode.Models.CategoryProduct」の変数を操作することはできませんので、私が取得したい場所や製品の1であります'ProductsCode.Models.CategoryProduct'に 'GetEnumerator'のパブリック定義が含まれていません
EDIT:他のforeachループとエラーを追加しました。
のようなのviewmodel何かを変更することはできません。 –
@KirkWollは、foreach内でforeachを実行している問題です。IEnumerableではないというエラーが表示されます。 – firedrawndagger
「IEnumerable」ではないと不平を言っていますか? * 'IEnumerable'は何ですか? –