我如何获得一个模型并正确地发布到另一个模型?

时间:2017-01-20 19:12:06

标签: c# asp.net-mvc

我正在建立一个在线商店,我目前正在使用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

能够显示待售衬衫的物品。但我还需要将用户选择的信息quantitysize发布到订单表。但是,我在视图中不能有2个模型,我尝试将它们组合成这样的视图模型:

public class ShirtOrderViewModel
{
    public virtual<Shirt> Shirts { get; set; }
    public virtual<Order> Orders { get; set; }
}

但我有以下错误:

无法将类型模型隐式转换为ViewModel

1 个答案:

答案 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; }