将Radiobutton发布到不同的布尔字段,然后使用name属性进行分组返回null?

时间:2016-11-10 11:06:19

标签: c# asp.net-mvc asp.net-mvc-4 razor radio-button

我将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; }
}

0 个答案:

没有答案