控制器的ASP.NET Core 1.0 POST IEnumerable <T>

use*_*430 5 c# asp.net-mvc asp.net-core

我有一个将模型返回到View的操作IEnumerable<T>。在视图中,我使用foreach遍历列表。T类型具有一个称为Amount的属性。

现在,当我单击SAVE按钮时,我想将模型(IEnumerable)发布到操作中。IEnumerbale项目,其属性Amount应包含正确的值。

在此处输入图片说明

当我提交操作时,该模型为null。

为了测试IEnumerable<T>IEnumerable<Produt>

public class Product
{

    public string Title { get; set; }
    public int Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

查看展示产品:

 @model IEnumerable<Product>


 <form asp-controller="Home" asp-action="Order" method="post" role="form">
       @foreach (var product in Model)
       {
            <div>
                  <span>@product.Title</span>
                  <input asp-for="@product.Amount" type="text">
            </div>
       }
  <button type="submit">SAVE</button>         

 </form>
Run Code Online (Sandbox Code Playgroud)

控制器后动作:

    [HttpPost]    
    public async Task<IActionResult> Order(IEnumerable<Product> model)
    {

    }
Run Code Online (Sandbox Code Playgroud)

use*_*430 3

问题出@model IEnumerable<Product>在视图上。我将其更改为 List 并使用 for 循环:

@model List<Product>


<form asp-controller="Home" asp-action="Order" method="post" role="form">
   @for (int i = 0; i < Model.Count(); i++)
   {
        <div>
              <span>@Model[i].Title</span>
              <input asp-for="@Model[i].Amount" type="text">
        </div>
   }
Run Code Online (Sandbox Code Playgroud)

节省