在我的Web应用程序中,在主视图中,我想显示单独的模型数据。
首先,我创建了一个像这样的视图模型:
public class ProductsViewModel
{
public IEnumerable < CakesViewModel > CakesVM { get; set; }
public IEnumerable < PizzaViewModel > PizzaVM { get; set; }
public IEnumerable < FastFoodsViewModel > FastFoodsVM { get; set; }
}
public class CakesViewModel
{
[Key]
public int ID {get;set;}
[Required]
[Display(Name = "Product Name")]
public string ProductName { get; set; }
[Required]
public decimal ProductPrice { get; set; }
[Required]
public string ProductPicture { get; set; }
[Required]
[Display(Name = "Category Name")]
public int Category_ID { get; set; }
public string Category_Name { get; set; }
[Required]
public bool Is_Customizable { get; set; }
public virtual ICollection < CustomizableFoods > CustomizableFoods { get; set; }
}
public class PizzaViewModel
{
[Key]
public int ID { get; set; }
[Required]
[Display(Name = "Product Name")]
public string ProductName { get; set; }
[Required]
public decimal ProductPrice { get; set; }
[Required]
public string ProductPicture { get; set; }
[Required]
[Display(Name = "Category Name")]
public int Category_ID { get; set; }
public string Category_Name { get; set; }
[Required]
public bool Is_Customizable { get; set; }
public virtual ICollection < CustomizableFoods > CustomizableFoods { get; set; }
}
public class FastFoodsViewModel
{
[Key]
public int ID { get; set; }
[Required]
[Display(Name = "Product Name")]
public string ProductName { get; set; }
[Required]
public decimal ProductPrice { get; set; }
[Required]
public string ProductPicture { get; set; }
[Required]
[Display(Name = "Category Name")]
public int Category_ID { get; set; }
public string Category_Name { get; set; }
[Required]
public bool Is_Customizable { get; set; }
public virtual ICollection < CustomizableFoods > CustomizableFoods { get; set; }
}
在控制器中,我尝试将单独的产品列表加载到单独的列表中,并从该列表加载到视图模型,然后将主视图模型传递给视图。
下面是我的控制器代码:
List<Products> Cakes = db.Products.Where(x => x.Category_ID == 1).ToList<Products>();
List<Products> Pizzas = db.Products.Where(x => x.Category_ID == 2).ToList<Products>();
List<Products> FastFoods = db.Products.Where(x => x.Category_ID == 3).ToList<Products>();
ProductsViewModel allProducts = new ProductsViewModel();
foreach (Products item in Cakes)
{
CakesViewModel productsView = new CakesViewModel();
productsView.ID = item.ID;
productsView.ProductPrice = item.ProductPrice;
productsView.ProductName = item.ProductName;
productsView.Is_Customizable = item.Is_Customizable;
productsView.Category_Name = item.FoodCategories.CategoryName;
productsView.ProductPicture = item.ProductPicture;
allProducts.CakesVM(productsView); // here is an error
}
在allProducts.CakesVM(productsView);
中,我没有看到CakesVM.Add()
选项。我需要知道一个解决方案。
1条答案
按热度按时间qxsslcnc1#
您的第一个问题是如何为属性赋值。你不能像使用方法那样使用语法。您只需为属性赋值。
接下来,您的主要问题是需要一个CakesViewModel列表才能为该属性赋值。没有什么是Linq中的一行代码做不到的。
当然,您需要对其他属性重复此模式。