【发布时间】:2016-11-18 03:16:51
【问题描述】:
我正在尝试为我的工作开发一个在线考试工具。我有一个类定义了一个包含问题列表的考试,一个包含答案列表的问题类和一个答案类。我有一个视图模型,它提取问题列表并将其传递给视图以及一个整数数组来保存每个问题的答案值。在视图中,我循环遍历问题,并在每个问题中循环遍历每个可能的答案。对于多项选择,这很容易。我只是使用:
<input asp-for="SelectedAnswer[q]" type="radio" value="@a" />@Model.Questions[q].answers[a].AnswerText
这很好用,它将 SelectedAnswer int 数组传递回提交时的控制器,我可以用它做任何我想做的事情。我的问题归结为问题是否需要多个正确答案的复选框列表。我显然不能使用相同的 int 数组来回发答案,所以我想为问题中的每个复选框创建第二个 bool 数组并将其发回。但这仅适用于一个问题,因为每个新问题都会在回发时覆盖 bool 数组。
我想弄清楚的是如何做到这一点,我有不同类型的问题可以显示在单个页面上,并在按下提交按钮进行处理时发送回控制器。
也许我需要一个更好的视图模型?我不确定下一步该去哪里。 我可以提供任何所需的代码,我只是不想用代码填满整个页面。
我的看法:
@model DSCA_Exams.Models.ExamViewModels.ExamViewModel
<form asp-action="Exam_Results">
<div>
@for (int q = 0; q < Model.Questions.Count(); q++)
{
<div>
<hr />
<h4>@Model.Questions[q].QuestionText</h4>
<ul>
@for (int a = 0; a < Model.Questions[q].answers.Count(); a++)
{
<li>
@if (Model.Questions[q].QuestionType == 0)
{
<input asp-for="SelectedAnswer[q]" type="radio" value="@a" />@Model.Questions[q].answers[a].AnswerText
}
else
{
<input asp-for="@Model.isSelected[a]" />@Model.Questions[q].answers[a].AnswerText
}
</li>
}
</ul>
</div>
}
<hr />
<input type="submit" value="Grade Test" class="btn btn-default" />
</div>
</form>
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-core