我的模型有一系列“问题”。每个问题都有一个“PossibleAnswers”集合。可能的答案对象具有isAnswer属性,该属性应绑定到代表问题的所选单选按钮(在每个问题的组中)。
我是MVC的新手,并且真的不确定如何构建视图,以便发布的模型将具有针对每个问题的可能收集的集合,其中一个对象具有isAnswer属性设置为true,基于来自相关的单选按钮组。
现在,视图应为每个问题构建一个单选按钮组/列表,其中可能的问题集合表示与问题相关的单选按钮选项。我可以在剃刀中做嵌套循环吗?你使用偏见?当我发布它时,MVC如何知道如何根据视图重建模型?
答案 0 :(得分:1)
实际上非常简单。棘手的部分是使用索引器
namespace MvcApplication2.Controllers
{
public class QuizModel
{
public IList<QuestionModel> Questions { get; set; }
}
public class QuestionModel
{
public IList<AnswerModel> PossibleAnswers { get; set; }
}
public class AnswerModel
{
public bool IsAnswer { get; set; }
}
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View(new QuizModel
{
Questions = Enumerable.Repeat(
new QuestionModel
{
PossibleAnswers = Enumerable.Repeat(new AnswerModel(), 3).ToList()
}, 2).ToList()
});
}
[HttpPost]
public ActionResult Index(QuizModel model)
{
return View(model);
}
}}
然后你的观点
@model MvcApplication2.Controllers.QuizModel
@{
View.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
Index</h2>
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Questions.Count; i++)
{
for (int j = 0; j < Model.Questions[i].PossibleAnswers.Count; j++)
{
<div>
@Html.EditorFor(c => Model.Questions[i].PossibleAnswers[j].IsAnswer)
</div>
}
}
<input type="submit" value="Submit" />
}
答案 1 :(得分:0)
你需要的是你的View中的“RadioButtonListFor”,这是一个很好的例子here