質問のリストがあり、ajax呼び出しを介してユーザーの回答を保存したいと思います。たとえば、50の質問があり、50の質問すべてをループして、各回答をコントローラーに送信する(保存する)必要があるのか、結果を大きなデータとしてコントローラーに送信する必要があるのかわかりません。
私の見解:
@using COPSGMIS;
@model IEnumerable<COPSGMIS.Models.Quiz>
@{
ViewBag.Title = "Questionaire";
}
<h2>Questionaire</h2>
<input type="hidden" id="currentstep" name="currentstep" />
@using (Html.BeginForm("Questionaire", "Question", FormMethod.Post, new { id = "SignupForm" }))
{
<div id="wizardtemplate">
@foreach (var step in Model)
{
<fieldset class="wizard">
<div class="page_Title"> @Html.DisplayFor(modelItem => step.Title)</div>
@foreach (var question in step.Results)
{
... code removed ....
<label for="question">@Html.DisplayFor(modelItem => question.NumberedQuestion)</label>
@Html.Raw(Html.DisplayControl(question.QuestionID, question.Choices, question.AnswerValue,question.ControlType))
</div>
@Html.Partial("_Comment", question)
<hr />
}
</fieldset>
}
レンダリングされたHTML:
<label for="question">3. This is a sample question (2) for the questionare?</label>
<div class='answer'><input type='date' id='3' name='3' value='2012-12-10' /></div>
</div>
... code removed ....
<label for="question">4. This is a sample question (3) for the questionare?</label>
<div class='answer'><input type='text' id='4' name='4' value='999' /></div>
</div>
モデル:
public class Quiz
{
public int ReviewID { get; set; }
public int StepID { get; set; }
public string Title { get; set; }
public virtual IEnumerable<Result> Results { get; set; }
}
ajax呼び出し:
function SaveAnswer(//not sure what needs to be passed) {
$.ajax({
url: '/Question/SaveQuestionaire',
type: 'POST',
cache: false,
dataType: 'json',
data: ({
// not sure what this will look like?
}),
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
},
success: function (json) {
// Message to confirm save
}
});
}