.net MVC отправляет вложенную модель в контроллер, набор данных пуст - PullRequest
0 голосов
/ 07 мая 2018
<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 голосов
/ 07 мая 2018

Я использовал немного другой подход с именованным списком

[HttpPost]
public ActionResult Sale(List<ClientList> ClientList)
{
    return View();
}
0 голосов
/ 07 мая 2018

Ваш ItemList является полем, а не свойством, и DefaultModelBinder не может установить его значение.

Измените его на

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

Как примечание, атрибуты name могут быть просто

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

, который позволяет присвоить параметру в методе POST любое имя (кроме ItemList)

...