asp.net mvc模型绑定对于编辑器模板</list>中的<list>项失败

时间:2013-02-26 17:32:37

标签: asp.net-mvc asp.net-mvc-4 model-binding

我搜索过很多关于SO的帖子,但仍然不确定我在这里做错了什么。我有一个model的“订单”,其中包含<list>的“OrderItem”

public class Order
{
    public int OrderId { get; set; }
    public int CustId { get; set; }
    public DateTime OrderDate { get; set; }
    public int OrderType { get; set; }
    ...
    ...
    public List<OrderItem> OrderItems = new List<OrderItem>();
}
public class OrderItem
{
    public string ProductCode { get; set; }
    public decimal RetailPrice { get; set; }
    public string ProductQuantity { get; set; }
}

在我的视图中,强烈键入Order模型,我使用编辑器模板来显示订单商品

@model FTG.Models.Order
@Html.EditorFor(x => x.OrderItems)

并且编辑器模板似乎为模型绑定指定了正确的名称:

input  type="number" id="OrderItems_0__ProductQuantity" name="OrderItems[0].ProductQuantity"...
input  type="number" id="OrderItems_1__ProductQuantity" name="OrderItems[1].ProductQuantity"...

但是我的模型返回到控制器,列表为count=0。模型的其余部分看起来很好,我只是无法从orderitems列表中获取值。

有谁知道我做错了什么,或者我错过了什么?

2 个答案:

答案 0 :(得分:0)

我认为您的模型类缺少子列表的属性。尝试为OrderItems列表添加属性。

答案 1 :(得分:0)

OrderItems是一个字段,而不是属性。你需要使用getter和setter创建一个属性,然后在构造函数中创建空列表并将其分配给属性。