我很难从我的 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 之后仍然为空,我不明白为什么。