Предположим, что у нас есть модель и представление вроде этого:

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].

Просто для каждого «пробела» в индексировании перемещайте Next objs, чтобы заполнить этот пробел.

0
UbuntuCore 5 Окт 2018 в 14:46

1 ответ

Лучший ответ

Вы можете использовать только:

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

Если вы вообще укажете индекс, он должен быть в порядке.

1
Chris Pratt 5 Окт 2018 в 13:22