我将radiobuttons嵌套在两个for循环中,它们用于测验,每个问题只应选择一个radiobutton,这是第二个for radi,其中radiobutton是:
for (int k = 0; k < Model[i].QuizAnswers.Count(); k++)
{
<li>
@Html.HiddenFor(model => Model[i].QuizAnswers[k].Correct)
@Html.RadioButtonFor(model => Model[i].QuizAnswers[k].Chosen, true, new { id = "radioanswer", @Name = "N-" + @Model[i].Order, data_questionid = @Model[i].Order })
@Html.DisplayFor(model => Model[i].QuizAnswers[k].Answer)
</li>
}
为了阻止用户选择多个单选按钮,我已经为每组单选按钮分组了名称属性,如上所述。每个Radiobutton都将true发布到单个布尔字段。如果没有分组的名称属性,则radiobuttons会正确发布,但是如果使用分组的名称属性,则不会发布。我猜这是因为通过使用name属性对按钮进行分组,MVC假定它们都应该返回到单个字段。我如何解决这个问题,以便Radiobuttons返回真实的单个字段,同时进行分组,以便只能选择一个?
编辑 - 根据要求,我的模型如下,单选按钮的视图模型也被发布:
public class QuizViewModel
{
public int QuizQuestionID { get; set; }
public int QuizID { get; set; }
public int EnrollmentID { get; set; }
public int OldCoursePageID { get; set; }
public string Question { get; set; }
public int Order { get; set; }
public int Type { get; set; }
public IList<QuizAnswers> QuizAnswers { get; set; }
}
上面的viewmodel中的QuizAnswers模型:
public class QuizAnswers
{
[Key]
public int QuizAnsID { get; set; }
public int QuizQuestionID { get; set; }
public string Answer { get; set; }
public int Order { get; set; }
public bool Correct { get; set; }
public bool Chosen { get; set; }
public virtual QuizQuestions QuizQuestions { get; set; }
}