.net MVC将嵌套模型发布到控制器,数据集为空

时间:2018-05-07 10:18:35

标签: asp.net-mvc list post model

<form method="post"> 
    <input type="text" name="ClientList[0].ItemList[0].ItemID">
    <input type="text" name="ClientList[0].ItemList[0].Qty">

    <input type="text" name="ClientList[0].ItemList[1].ItemID">
    <input type="text" name="ClientList[0].ItemList[1].Qty">


    <input type="text" name="ClientList[1].ItemList[0].ItemID">
    <input type="text" name="ClientList[1].ItemList[0].Qty">

    <input type="text" name="ClientList[1].ItemList[1].ItemID">
    <input type="text" name="ClientList[1].ItemList[1].Qty">

    <input type="submit" />
</form>

这是控制器

[HttpPost]
public ActionResult Sale(List<ClientList> ClientList)
{
    return View();
}


public class ClientList
{
    public List<ItemList> ItemList = new List<ItemList>();
}

public class ItemList
{
    public int ItemID { get; set; }
    public string Qty { get; set; }
}

这是结果 enter image description here

第二个循环,项目详细信息未提交。

2 个答案:

答案 0 :(得分:4)

您的ItemList是字段,而非属性,DefaultModelBinder无法设置其值。

将其更改为

public class ClientList
{
    public List<ItemList> ItemList { get; set; }
}

作为旁注,name属性可以只是

<input type="text" name="[0].ItemList[0].ItemID">

允许您将POST方法中的参数命名为您想要的任何内容(ItemList除外)

答案 1 :(得分:0)

我使用了一种不同的方法,使用命名列表

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at Adding_new_source.New_source.main(New_source.java:53)