Используйте javascript и привязку модели JSON в MVC3, чтобы помочь вам здесь.
На стороне клиента создайте javascript-объект, соответствующий объекту на стороне сервера.
function MultipleChoiceQuestion(choice_number, choice_wording, help_text)
{
this.ChoiceNumber = choice_number;
this.ChoiceWording = choice_wording;
this.HelpText = help_text;
}
Затем используйте javascript для итерации и анализа DOM, чтобы получить переменное количество ответов.
псевдо-код ...
var ListOfQuestions = [];
foreach(some dom elements)
{
var cn = dom.choiceNumber;
var cw = dom.choiceWording;
var ht = dom.helpText;
var question = new MultipleChoiceQuestion(cn, cw, ht);
ListOfQuestions.push(question);
}
Опубликовать это с помощью ajax. Недостатком этого метода является то, что вы должны использовать ajax.
$.ajax({
url:"/yoursite/controller/action",
type:"POST",
data: JSON.stringify(ListOfQuestions),
dataType: 'json',
contentType: 'application/json, charset=utf-8',
success: function(data){},
error: function(){}
});
Затем на стороне сервера у вас есть класс вопросов, который вы уже определили (имена ваших свойств должны совпадать с именами свойств на стороне клиента), и класс контейнера ...
public class QuestionContainer()
{
public List<MultipleChoiceQuestion> Questions {get; set;
}
и ваше Действие принимает это как параметр
public ActionResult Create(QuestionContainer questions)
{
...
}
Фил Хаак написал статью об этом, но до выпуска привязки MVC3. Теперь легче, чем он написал.
http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx