显示数据库中的产品以按产品类别查看

时间:2014-11-14 12:09:18

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

我正在处理我的项目,现在我已经陷入困境。

我有主索引页面,其中包含产品照片。我想按类别名称显示这些产品。

我制作了ProductDisplayViewModel.cs,其中包含:

namespace MyProject.ViewModels
{
    public class ProductDisplayViewModel
    {
        public int Id { get; set; }
        public string ProductName { get; set; }
        public string ProductDescription { get; set; }
        public decimal ProductPrice { get; set; }
        public uint ProductQuantity { get; set; }
        public int PremiumPoints { get; set; }
    }
}

稍后我在我的视图中将类别名称添加到操作链接。

<a href="@Url.Action("Index","Category", new {Name="Pieczywo"})">
            <img class="img-responsive" src="~/Content/Images/Mainpage/Categories/pieczywo.jpg" alt="CategoryName">
</a>

接下来,我预备了包含带有参数字符串categoryName的动作索引的CategoryController。

    public ActionResult Index(string categoryName)
    {
        using (var db = new ApplicationDbContext())
        {
            // pobieranie kategorii po nazwie
            var selectedcategory = db.ProductCategories.FirstOrDefault(c => c.Name == categoryName);

            var q = db.Products.Where(x => x.Category.Contains(selectedcategory)).Select(r => new ProductDisplayViewModel()
            {
                Id = r.Id,
                ProductName = r.ProductName,
                ProductDescription = r.ProductDescription,
                ProductPrice = r.PricePerUnit,
                //ProductQuantity = r.Quantity
                PremiumPoints = r.PremiumPoints
            });

            return View(q.ToList());
        }
        return View();
    }

稍后在其他视图中我显示结果:

@model IEnumerable<MyProject.ViewModels.ProductDisplayViewModel>
@{
    ViewBag.Title = "Products";
}

<h2>Products by category name</h2>

<br />
<div>
    <table class="table table-striped table-bordered table-condensed">
        <thead>
            <tr>
                <th>ID</th>
                <th>Product name</th>
                <th>Product description</th>
                <th>Price per unit</th>
                <th>Quantity</th>
                <th>Premium points</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>@item.Id</td>
                    <td>@item.ProductName</td>
                    <td>@item.ProductDescription</td>
                    <td>@item.ProductPrice</td>
                    <td>@item.ProductQuantity</td>
                    <td>@item.PremiumPoints</td>
                </tr>
            }
        </tbody>
    </table>
    <br /><br /><br />
    <br /><br /><br />

</div>

我的产品型号:

public class Product
{
    public Product()
    {
        Category = new List<ProductCategory>();
        OrderDetails = new List<OrderDetail>();
        Supliers = new List<Suplier>();
    }

    public int Id { get; set; }
    public string ProductName { get; set; } // nazwa produktu
    public string ProductDescription { get; set; } // opis produktu
    public string ProductImageUrl { get; set; } // url do obrazka produktu
    public ICollection<ProductCategory> Category { get; set; } // kategorie produktu
    public decimal PricePerUnit { get; set; } // cena jednostkowa
    public int PremiumPoints { get; set; } // punkty zniżki za każdy zakupiony produkt
    public uint Quantity { get; set; } // ilość na stanie
    public NutritionalValue NutritionalValues { get; set; } // wartości odżywcze
    public virtual ICollection<Suplier> Supliers { get; set; } // dostawcy produktu
    public virtual ICollection<OrderDetail> OrderDetails { get; set; }
}

我的问题是,当我尝试按类别名称显示我的产品时,我收到错误:

  

LINQ to中不支持指定的类型成员“Quantity”   实体。仅初始化程序,实体成员和实体导航   支持属性。

当我的动作尝试将q.ToList()传递给我的View()

时,就会发生这种情况

这个数量的问题。我认为我的应用程序可能找不到这个类别?怎么解决这个问题?

我不知道如何处理这个问题。请帮帮我:/

0 个答案:

没有答案