Ошибка в том, что
<%: Html.TextBoxFor(model => model.UserInfo.UserQuestions.ElementAt(0).UserQuestion)%>
<%: Html.TextBoxFor(model => model.UserInfo.UserQuestions.ElementAt(1).UserQuestion)%>
Генерирует HTML-код:
<input id="UserQuestion" name="UserQuestion" type="text" value="UserQuestion" />
<input id="UserQuestion" name="UserQuestion" type="text" value="UserQuestion" />
Как видите, есть входы с одинаковыми id
s, что запрещено.Поэтому, когда вы отправляете данные обратно в контроллер, через PostParameters отправляется только одно значение: UserQuestion =, без индексов, без префиксов, без UserQuestions.UserQuestion[0]
.Для более подробного изучения подобного вопроса я предлагаю использовать Fiddler и перехватывать трафик, отправляемый вашими формами.
Вторая проблема с вашим кодом заключается в том, что вы используете UpdateModel(User, "UserInfo")
и параметр UserInfo (типаПользователь).(Кстати: как этот код компилируется? Конечно, не должен).Лучше использовать FormCollection
в качестве параметра при вызове UpdateModel
.Потому что в вашем случае переменная UserInfo
уже обновлена.
Что касается меня, вы делаете странные вещи, пытаясь редактировать всю коллекцию.