Я не смог сделать это сам.
Я знаю, что вы можете автоматически обновить один дочерний элемент, то есть Dinner.RSV. Я никогда не видел возможности обновления дочернего перечислимого объекта, что потребовало бы привязки, чтобы узнать, какое свойство является идентификатором, и найти его (т. Е. Dinner.RSVP.Where (r => r.RSVP_ID == input_id), а затем обновить это). Я не знаю достаточно о пользовательском связывании, чтобы сделать что-то подобное.
Однако я сделал цикл и определил rsvp и int в качестве префикса:
Итак, вы делаете:
UpdateModel("Dinner", Dinner);
чтобы обновить родителя, а затем:
int i = 0;
foreach (var r in Dinner.RSVPs) {
UpdateModel(r, "Dinner.RSVPs[" + i++ + "]");
}
Не совсем так чисто, но у меня это хорошо работает. Впрочем, для создания проверки может потребоваться немного больше усилий (вы хотите проверить все одновременно, и убедитесь, что вы не вернетесь к представлению на первом RSVP с ошибкой).
EDIT : исправлен код, отражающий решение OP, включая ошибку в моем порядке параметров. С учетом вышесказанного мне удобнее использовать свойство RSVP.ID, чем работающее целое число. Если вы знаете, что Dinner.RSVP будут такими же на POST, как и GET (я уверен в этом в моем коде), то использование RSVP.ID будет работать. Если RSVP будут отличаться, то обновятся будут только те, кто присутствует на обоих. Однако использование последовательного типа int может привести к обновлению неверного объекта.
Надеюсь, это поможет,
Джеймс