C# ASP核心文本框数组未绑定

C# ASP核心文本框数组未绑定,c#,asp.net-core,C#,Asp.net Core,我已经创建了一个动态表单,允许用户向包含输入的表中添加行 我想将字段数组绑定到动作中的模型 我相信我已经为任何其他行“fieldName[0]”遵循了正确的命名过程 我创建了一个条目并发布到操作,但是绑定没有发生 我已经检查了请求的标题,可以看到正在发布的信息 以下是表格数据: CompanyAllId[0]: 0 EmployeeId[0]: 0 Name[0]: Test Name Position[0]: Manager MonthlyEarnings[0]: 10000 startDat

我已经创建了一个动态表单,允许用户向包含输入的表中添加行

我想将字段数组绑定到动作中的模型

我相信我已经为任何其他行“fieldName[0]”遵循了正确的命名过程

我创建了一个条目并发布到操作,但是绑定没有发生

我已经检查了请求的标题,可以看到正在发布的信息

以下是表格数据:

CompanyAllId[0]: 0
EmployeeId[0]: 0
Name[0]: Test Name
Position[0]: Manager
MonthlyEarnings[0]: 10000
startDate[0]: 02/04/2018 17:58:00
EmploymentType[0]: Full Time
这是我的看法

<form asp-action="SaveEmployee">
    <table class="table table-bordered table-hover table-striped" id="employee-table">
        <thead>
            <tr>
                <th>
                    Name
                </th>
                <th>
                    Position
                </th>
                <th>
                    Monthly Earnings
                </th>
                <th>
                    Start Date
                </th>
                <th>
                    Employment Type
                </th>

        </thead>
        <tbody class="table-body">
            @for (int i = 0; i < Model.Count; i++)
            {
                <tr class="table-row" data-id="0">
                    @Html.Hidden("CompanyAllId[" + i + "]", Model[i].CompanyAllId)
                    @Html.Hidden("EmployeeId[" + i + "]", Model[i].EmployeeId)
                    <td> @Html.TextBox("Name[" + i + "]", Model[i].Name)</td>
                    <td>@Html.TextBox("Position[" + i + "]", Model[i].Position)</td>
                    <td>@Html.TextBox("MonthlyEarnings[" + i + "]", Model[i].MonthlyEarnings)</td>
                    <td>@Html.TextBox("startDate[" + i + "]", Model[i].startDate)</td>
                    <td>@Html.TextBox("EmploymentType[" + i + "]", Model[i].EmploymentType)</td>
            </tr>
        }
        </tbody>
    </table>
    <button class="clone-button btn btn-flat btn-primary">Add Row</button>
    <button type="submit" class="btn btn-flat btn-primary">Save</button>
</form> 

名称
位置
月收入
开始日期
就业类型
@for(int i=0;i
控制器动作

[HttpPost]
[Authorize]
public async Task<IActionResult> SaveEmployee(List<Models.CompanyViewModels.Employees.Employee> vm)
{

    return View();
}
[HttpPost]
[授权]
公共异步任务SaveEmployee(列表vm)
{
返回视图();
}
我相信我遵循了正确的命名

不,你没有。您必须将索引指定给元素,而不是属性。
因此,如果您的参数名为
vm

@Html.Hidden("vm[" + i + "].CompanyAllId", Model[i].CompanyAllId)
@Html.Hidden("vm[" + i + "].EmployeeId", Model[i].EmployeeId)
<td> @Html.TextBox("vm[" + i + "].Name", Model[i].Name)</td>
<td>@Html.TextBox("vm[" + i + "].Position", Model[i].Position)</td>
<td>@Html.TextBox("vm[" + i + "].MonthlyEarnings", Model[i].MonthlyEarnings)</td>
<td>@Html.TextBox("vm[" + i + "].startDate", Model[i].startDate)</td>
<td>@Html.TextBox("vm[" + i + "].EmploymentType", Model[i].EmploymentType)</td>

显示您在操作中发布的内容,是否使用Ajax?我刚刚用您的代码替换,并将“vm”替换为“model”,查看时它会绑定。但是返回数据并不绑定。这是正确的做法吗?@PowerMan2015我不知道您是如何将行添加到表中的(您没有发布任何代码)。发布后,您的模型Classic开始工作了,我没有意识到命名的继续部分需要匹配操作中的参数名称。谢谢你help@PowerMan2015我认为可能是这样,这就是为什么我添加了“如果您的参数名为vm,那么”:
vm[0].CompanyAllId: 0
vm[0].EmployeeId: 0
vm[0].Name: Test Name
vm[0].Position: Manager
vm[0].MonthlyEarnings: 10000
vm[0].startDate: 02/04/2018 17:58:00
vm[0].EmploymentType: Full Time