ASP.NET Core 1.0 POST IEnumerable 到控制器

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

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

在此处输入图像描述

当我提交它时,在动作中,模型为空。

为了测试, IEnumerableIEnumerable

 public class Product { public string Title { get; set; } public int Amount { get; set; } } 

查看显示产品:

  @model IEnumerable 
@foreach (var product in Model) {
@product.Title
}

控制器后期行动:

  [HttpPost] public async Task Order(IEnumerable model) { } 

问题是@model IEnumerable 。 我将其更改为List并使用for循环:

 @model List 
@for (int i = 0; i < Model.Count(); i++) {
@Model[i].Title
}

保存

它最终归结为MVC对表单post理解的序列化格式(例如:application / x-www-form-urlencoded)。 因此,无论何时使用TagHelpersHtmlHelpers ,请确保尝试以下列方式呈现表单:

操作参数: IEnumerable products
请求格式: [0].Title=car&[0].Amount=10.00&[1].Title=jeep&[1].Amount=20.00


操作参数: Manufacturer manufacturer ,其中Manufacturer类型如下所示:

 public class Manufacturer { public string Name { get; set; } public List Products { get; set; } } public class Product { public string Title { get; set; } public int Amount { get; set; } } 

请求格式: Name=FisherPrice&Products[0].Title=car&Products[0].Amount=10.00&Products[1].Title=jeep&Products[1].Amount=20.00


动作参数: IEnumerable states
请求格式1: states=wa&states=mi&states=ca ca.
请求格式2: states[0]=wa&states[1]=mi&states[2]=ca


Action参数: Dictionary states
请求格式: states[wa]=washington&states[mi]=michigan&states[ca]=california