Это как раз то, что вы называете вводом; он должен быть в форме CollectionProperty[N].PropertyC
, где N
- индекс. Предполагая, что вы оба привязываетесь к List<MyObject>
и используете это как модель вашего представления:
@for (var i = 0; i < Model.Count; i++)
{
<input asp-for="@Model[i].PropertyC" />
}
Что соответствует параметру действия, например:
public IActionResult Foo(List<MyObject> myObjects)
Тем не менее, я думаю, что вы на самом деле боретесь с тем, что ваш "существующий" набор на самом деле не существует. Каждый запрос уникален, и существуют только те вещи, которые были буквально отправлены вместе с этим запросом. Тот факт, что вы изначально заполнили представление каким-либо набором вещей, несущественен. Если вы не отправите обратно эту полную коллекцию, она больше не существует.
Не то чтобы вы должны опубликовать его обратно. Все, что публикуется, потенциально может быть изменено, и если вы не хотите, чтобы PropertyA
и PropertyB
были изменены, они не должны публиковаться. Так, что это оставляет тебя? Mapping.
То, что вы хотите сделать, это просто опубликовать PropertyC
для всех предметов. Затем вы выбираете свой полностью заполненный список MyObject
экземпляров, как только вы это делаете (база данных запросов и т. Д.) Затем вы перебираете один или другой список и сопоставляете значение PropertyC
со своим полностью заполненным списком:
for (var i = 0; i < existingMyObjects.Count; i++)
{
existingMyObjects[i].PropertyC = myObjects[i].PropertyC;
}
FWIW, вы также можете опубликовать ассоциированный ID или подобное. Приведенный выше метод основан на том, что порядок сбора одинаков как до, так и после, что не всегда гарантируется.