如何在没有正确索引的情况下发送数组/列表的表单值?

时间:2018-10-05 11:46:54

标签: c# asp.net-core asp.net-core-mvc

让我们假设我们有这样的模型和视图:

public class Test
{
    public List<string> data { get; set; }
}

<form asp-action="View">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>

    <input name="data[0]" value="dsa" />
    <input name="data[1]" value="asd" />

    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-default" />
    </div>
</form>

[HttpPost]
public IActionResult View(Test input)
{
    return View();
}

我正在将此表格发送给控制器的方法,他正确地看到了那些数据元素。

但是如果我将索引更改为:

<input name="data[0]" value="dsa" />
<input name="data[2]" value="asd" />

然后它将无法正常工作。我知道以这种方式有意义,但是是否可以禁用索引检查,而只是将所有这些值插入具有正确索引的列表/数组中?

因此,在第二种情况下,data[0]将是data[0],而data[1]将是data[2]

只需为索引中的每个“间隙”移动下一个objs即可消除该间隙。

1 个答案:

答案 0 :(得分:1)

您只能使用:

<input name="data[]" value="dsa" />
<input name="data[]" value="asd" />

但是,如果您完全指定索引,则它必须是有序的。