如何在单个创建视图上实现对订单和订单明细的创建操作?

时间:2011-06-16 08:00:51

标签: asp.net-mvc asp.net-mvc-3

有人想出了简单的解决方案吗?

问题:鉴于两个模型类的关系为一对多,我如何为这些设计单个创建..

如何将订单详细信息集合添加到数据库中尚未保留的订单实体?我将使用什么视图模型? 鉴于我已经完成订单页面(主页),那么我必须有一个收集订单详细信息的部分视图,之后当我点击“保存”时,它将创建“订单”加上其“订单详细信息”的集合。感谢

简单的代码解决方案将会有所帮助。感谢

这是我的模特:

public class Order
    {
        [Key]
        public int OrderID { get; set; }

        [DisplayFormat(NullDisplayText = "0.00")]
        public decimal TotalAmount { get { return OrderDetails.Sum(od => od.Amount); } }

        public decimal Cash { get; set; }

        [DisplayFormat(NullDisplayText = "0.00")]
        public decimal TotalBV { get { return OrderDetails.Sum(od => od.BV); } }

        public int MemberID { get; set; }

        public virtual Member Member { get; set; }

        public virtual ICollection<OrderDetail> OrderDetails { get; set; }
    }

public class OrderDetail
{
    [Key]
    public int OrderDetailID { get; set; }
    public int OrderID { get; set; }

    public decimal Amount { get { return Product.Price * Quantity; } }

    public decimal BV { get { return Product.BV * Quantity; } }

    public int Quantity { get; set; }
    public virtual Product Product { get; set; }
}

感谢。

2 个答案:

答案 0 :(得分:0)

简短的回答实际上是“它取决于”:)你首先要问的问题(它与MVC无关)如下:你什么时候想提交用户条目?我可以想到几个选择:

  • 您有一个“创建订单”页面。用户填写标题字段(看起来像是唯一的成员),点击保存,您在数据库中保存订单,获取订单ID,使标题字段为只读,用户开始输入行。
  • 表单在条目表单上有标题字段和详细信息字段(个人而言,我发现它令人困惑 - 但这是一个品味问题)。您可以获取所有数据(可能在表单集合中)并构建订单和订单详细信息对象(在控制器中,或通过自定义提供程序)

此外,您需要回答有关订单详情的相同问题。是否要提交每一行,或者允许用户创建多行(通过一些“添加行”按钮和后面的JavaScript代码),然后提交一组行。

一旦确定了您想要的方式 - 设计表单会更容易。如果你遇到问题 - 回来;我相信你会得到很多帮助!

上帝运气

答案 1 :(得分:0)

我不知道MVC的绑定是多么聪明,因为我使用自己的绑定,所以我不知道它是否可以绑定模型 你。

您可以做的是为每一行的所有输入编号。所以Product1,'Amount1`等等。对于每个新行(比如有一个“添加详细信息”按钮),您可以使用下一个可用数字创建一组新输入。

当你解析Request.Form时,你只需要找到每一行,直到你找不到 - 然后你知道你已经完成了。

HTH