我正在建立一个在线商店,我目前正在使用2个模型。 Shirt
模型显示当前为用户显示的T恤(照片,描述,基本价格,尺寸)的所有详细信息。 Order
模型是用户选择的所有项目的大小和数量。目前,在我的订单控制器的post方法中,我有以下内容向用户显示来自衬衫模型的信息:
[AuthLog(Roles="Registered Users, Administrators")]
public ActionResult Index(int? id, Shirt shirt)
{
var result = (from s in db.Shirts where s.SiteActive == true select s).ToList();
id = (from s in result select s.Id).First();
var sCount = result.Count();
ViewBag.TabTitle = null;
ViewBag.ShirtSizeId = new SelectList(db.ShirtSizes, "Id", "Name");
ViewBag.ShirtQuantityId = new SelectList(db.ShirtQuantities, "Id", "Name");
if (sCount >= 1)
{
shirt = db.Shirts.Include(s => s.Files).SingleOrDefault(s => s.Id == id);
var TabTitle = (from s in result select s.TabName).First();
var TabContent = (from s in result select s.Caption).First();
var TabPrice = (from s in result select s.Price).First();
ViewBag.TabTitle = TabTitle;
ViewBag.TabContent = TabContent;
ViewBag.TabPrice = TabPrice;
}
return View(shirt);
}
在视图中我有
@model TShirtEmpAdmin.Models.Shirt
能够显示待售衬衫的物品。但我还需要将用户选择的信息quantity
和size
发布到订单表。但是,我在视图中不能有2个模型,我尝试将它们组合成这样的视图模型:
public class ShirtOrderViewModel
{
public virtual<Shirt> Shirts { get; set; }
public virtual<Order> Orders { get; set; }
}
但我有以下错误:
无法将类型模型隐式转换为ViewModel
答案 0 :(得分:0)
实现目标的最佳方法是创建viewmodel
适合您的目标。您的视图中的模型应该类似于@model TShirtEmpAdmin.Models.OrderViewModel
,其定义如下:
public class OrderViewModel
{
public Order Order { get; set; }
public List<Item> items{ get; set; }
}
您的其中一项是Shirt
。如果您的商品中没有衬衫,则可以将public List<Item> items{ get; set; }
更改为public List<Shirt> shirts{ get; set; }
。如果没有人可以在订购时订购多件衬衫,您可以将public List<Shirt> shirts{ get; set; }
更改为public Shirt shirt{ get; set; }
。