Привязка модели к IList<T>
Я писал о привязке модели к IList<T>
.Я думаю, что это именно та проблема, которую вы пытаетесь решить.И есть еще несколько постов в моем блоге, которые могут вам очень помочь, особенно потому, что вы не сказали, есть ли у вас HTML-форма вопросов или Javascript-объекты, построенные из какой-то общей формы вопроса.Тем не мение.Эти два сообщения помогут вам решить обе проблемы:
Понимая привязку модели MVC Asp.net, вы сможете легко привязать свои данные (формы или объекты) на стороне клиента к:
public ActionResult AddQuestions(IList<Question> questions)
{
// process questions
}
Предположим, что вы отправляете обратно форму HTML
Основное требование - правильно индексировать имена полей HTML, поскольку они отправляются обратно на сервер.В вашем случае ваши поля должны быть:
<input type="text" value="questions[0].questionText" />
<select name="question[0].questionType">
<!-- options -->
</select>
Когда вы динамически добавляете новые пары (для формирования новых вопросов), вы должны убедиться:
- индексирование элементов начинается с 0 и
- в индексах нет пробелов.
Если вы также предоставите возможность удалять определенные вопросы (при их добавлении / редактировании), вам придется переиндексировать элементы при каждом удалении.
Проверка модели (формы или правильно подготовленные объекты)
Самое замечательное в этом - то, что вы можете помещать атрибуты аннотаций данных в свой класс модели приложения и автоматически проверять опубликованные объекты,так что вам не нужно делать это самостоятельно.