Я хотел бы иметь две группы радиокнопок в форме и получить, какой элемент был проверен избегая возможности выбрать несколько радиокнопок, но как только я добавляю имя к моему вводу радиокнопок, то я больше не могу видеть в моей модели, какой элемент проверен.
Вот мой взгляд:
...
@using (Html.BeginForm("Validate", "Quiz"))
{
@for (int i = 0; i < Model.questions.Count(); i++)
{
<ul>
@{ int j = 0; }
@foreach (var ch in Model.questions[i].choices)
{
<li>
@Html.RadioButtonFor(m => m.questions[i].choices[j].isChecked, true, new { id = ch.choiceId}) @ch.choiceTitle
@Html.HiddenFor(m => m.questions[i].choices[j].isChecked)
</li>
}
</ul>
}
<input type="submit" value="Valider" />
}
А вот моя структура:
public class QuizViewModel
{
public string quizTitle { get; set; }
public string quizListDisplay { get; set; }
public List<QuizQuestion> questions { get; set; }
public Guid owner { get; set; }
}
public class QuizQuestion
{
public int questionId { get; set; }
public int order { get; set; }
public string questionTitle { get; set; }
public List<QuizChoice> choices { get; set; }
public bool isSingleResponseQuestion { get; set; }
}
public class QuizChoice
{
public int choiceId { get; set; }
public string choiceTitle { get; set; }
public int index { get; set; }
public bool isCorrectAnswer { get; set; }
public bool isChecked { get; set; }
public string feedback { get; set; }
public int selectedAnswer { get; set; }
}
Но проблема в том, что я могу выбрать несколько радиобуттонов в одной группе, поэтому я добавил этот код в RadioButtonFor после идентификатора:
@Name = «group» + i
Но тогда я не мог получить isChecked в моей модели.
Что я здесь делаю не так? Как решить эту проблему?
Спасибо!
Лучшие
Для решения проблемы я добавил поле selectedChoiceId в мой класс QuizQuestion и использовал RadioButtonFor следующим образом:
@формат HTML.RadioButtonFor(m => m.вопросы[i].selectedChoiceId, ch.choiceId)
1-е поле RadioButtonFor служит для группировки переключателей, поэтому оно должно быть одинаковым для всех переключателей для одного вопроса