无法创建正确的视图来显示所选类别URL的产品

时间:2014-02-27 23:31:14

标签: asp.net-mvc entity-framework c#-4.0

我想按类别显示产品列表。 我第一次访问该网站时,会显示一个类别URL列表。如果你点击一个URL,我会喜欢 获取与此类别相关的所有产品。 我构建它时,我的HomeController基于类别。 当我在浏览浏览器时,我为该模型选择了Categorie。我不确定它是不是好的。我也尝试使用该产品,它也没有工作。 有人可以解释我应该做些什么来生成正确的解决方案? 感谢

目前我收到此错误: 传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [MVCWebStore.Models.Produit]',但此字典需要类型为“MVCWebStore.Models.Categorie”的模型项。

这是HomeController.cs(基于Produit的构建)

 namespace MVCWebStore.Controllers
 {
   public class HomeController : Controller
   {
      private MVCWebStoreDdEntities1 db = new MVCWebStoreDdEntities1();

      public ActionResult Browse(int id = 0)
      {
        var categorieProduitToEdit = (from c in db.Produits where c.IdCategorie == id select c);

        if (categorieProduitToEdit == null)
        {
            return HttpNotFound();
        }

          return View(categorieProduitToEdit.ToList());
    }

这是Browse.cshtml

 @model MVCWebStore.Models.Categorie

 @{
    ViewBag.Title = "Browse";
 }

 <ul>
     @foreach (var produit in Model.Produits)
     {
        <li>
             @produit.Description
        </li>
     }
 </ul>

Produit.cs

 namespace MVCWebStore.Models
 {
    using System;
    using System.Collections.Generic;

    public partial class Produit
    {
         public Produit()
         {
             this.ItemPaniers = new HashSet<ItemPanier>();
         }

         public int IdProduit { get; set; }
         public int IdCategorie { get; set; }
         public string NomProduit { get; set; }
         public string Description { get; set; }
         public double Prix { get; set; }
         public int Quantite { get; set; }

         public virtual Categorie Categorie { get; set; }
         public virtual ICollection<ItemPanier> ItemPaniers { get; set; }
     }
  }

Categorie.cs

 namespace MVCWebStore.Models
 {
     using System;
     using System.Collections.Generic;

     public partial class Categorie
     {
         public Categorie()
         {
             this.Produits = new HashSet<Produit>();
         }

         public int IdCategorie { get; set; }
         public string NomCategorie { get; set; }

         public virtual ICollection<Produit> Produits { get; set; }
     }
  }

1 个答案:

答案 0 :(得分:0)

错误会告诉您视图的期望。目前它正在期待一个项目,但是你传递了一系列项目。

将一个带有模型集合的分类模型传递给模型

public class HomeController : Controller

{       private MVCWebStoreDdEntities1 db = new MVCWebStoreDdEntities1();

  public ActionResult Browse(int id = 0)
  {

  //GET THE CATEGORIE
  var Categorie = //GET THE CATEGORIE FROM THE DATABASE


    var categorieProduitToEdit = (from c in db.Produits where c.IdCategorie == id select c);

    if (categorieProduitToEdit == null)
    {
        return HttpNotFound();
    }

    //BUILD THE MODEL
   Categorie.produits = categorieProduitToEdit.ToList();

      return View(Categorie);
}