MVC4アプリのコントローラーに投稿された小さな多肢選択式質問票から値を取得するのに苦労しています。
モデルは次のようになります。
public class Evaluation
{
public int Id { get; set; }
public IEnumerable<MultipleChoiceQuestion> Question { get; set; }
public Remark Rem { get; set; }
}
public class MultipleChoiceQuestion
{
public int Id { get; set; }
public string Question { get; set; }
public MultipleChoiceAnswer Answer { get; set; }
}
public enum MultipleChoiceAnswer
{
DISAGREE,
NEUTRAL,
AGREE,
NA,
}
これはビューです(マークアップをいくつか省略しています):
@model Models.Evaluation
@using (Html.BeginForm("EvaluationB", "Evaluation", FormMethod.Post))
{
@foreach (var item in Model.Question)
{
@Html.DisplayFor(model => item.Question)
@Html.EditorFor(model => item.Question, "Enum_RadioButtonList", new { Id = item.Id })
}
@Html.Label("Remark")
@Html.TextAreaFor(model => model.Rem)
<input type="submit" value="Next" />
}
「Enum_RadioButtonList」は、https ://gist.github.com/973482から取得したビューです。列挙型の値をラジオボタンリストに表示するのに最適な方法のようです(MVC 4ではそれらの方が簡単な方法です)
コントローラは次のようになります。
public ActionResult EvaluationA()
{
Models.Evaluation evm = new Models.Evaluation();
evm.Question = db.MultipleChoiceQuestions.ToList(); //feeding the View some predefined questions
return View(evm);
}
public ActionResult EvaluationB(Models.Evaluation ev)
{
if (ModelState.IsValid)
{
// TODO: save model
return View("EvaluationB", evm);
}
return View("EvaluationA", ev);
}
質問はビューに正常に読み込まれますが、何らかの理由で、コントローラーに投稿されたモデルはHttpPostの後も空のままであり、その理由がわかりません。