关于MVC ViewModel和局部视图

时间:2012-06-19 00:57:18

标签: asp.net-mvc-3 viewmodel partial-views

  

可能重复:
  How to edit multiple models in a single Razor View

我正在使用MVC3来制作订单功能。我有Order和OrderDetail模型。 Order和OrderDetail属于一对多关系。 这两个模型看起来像这样:

public class order
{
    public int OrderId{get;set;}
    public int OrderStatusID { get; set; } 

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

}

 public  class OrderDetail
 {
    public int OrderDetailID { get; set; }
    public int OrderID { get; set; }
    public int Quantity { get; set; }
    public string Description { get; set; } 
    public int CategoryID { get; set; }   
    public virtual Order Order { get; set; }
    public virtual Category Category { get; set; }

}

我想在视图中使用它们,所以我在下面为它创建了OrderViewModel,

public class OrderViewModel
{
    public virtual Order Order { get;set; }
    public virtual List<OrderDetail> OrderDetails { get;set; }
}

我有两个问题:

1,如何使用OrderViewModel制作用于创建和编辑Order的页面? 我为OrderDetail制作了部分视图。在“创建”页面中,我执行了类似下面的操作,但我认为这不正确。

@foreach (var detail in Model.OrderDetails)
{
    @Html.Partial("_OrderDetail", detail)  
}   

2,Order和OrderDetail处于一对多关系中,在创建Order页面中,我希望用户能够添加多个OrderDetail。我使用jQuery创建一个可以生成多个OrderDetail字段的按钮,但我不知道如何从每个OrderDetail中检索值。

这是怎么做到的?

2 个答案:

答案 0 :(得分:0)

使用EditorFor了解详情。

答案 1 :(得分:0)

请查看以下链接,查看 Darin Dimitrov 的答案

How to use LabelFor on a strongly typed view for a list

LabelFor not working in loop (for/foreach/template)

如果您仍有疑问,请与我们联系。