I have a page with 4 radio buttons (Exam question and 4 options to choose from). With the code below, I can read the option values after user clicks the button.
I have two questions:
- Why are all radio buttons selected when the page first loads?
- How to find out which radio button is selected after the post?
Thanks!
StudentQuestions.cshtml
@page "{examId:int?}"
@model VerityLearn.WebUI.Pages.Questions.StudentQuestionsModel
@{
ViewData["Title"] = "StudentQuestions";
}
<div>
<form method="post">
@Html.LabelFor(model => model.QuestionViewModel.QuestionText);
<p>Select the correct option.</p>
int optionIndex = -1;
@foreach (OptionViewModel opt in Model.QuestionViewModel.Options)
{
optionIndex++;
@Html.RadioButtonFor(model => model.QuestionViewModel.Options[optionIndex], Model.QuestionViewModel.Options[optionIndex]);
@opt.OptionText<br />
}
<button type="submit" asp-route-questionIndex="@(Model.QuestionNdx + 1)" class="btn btn-primary @nextDisabled">Next</button>
</form>
</div>
StudentQuestions.cshtml.cs
public class StudentQuestionsModel : PageModel
{
//private readonly VerityContext _context;
private readonly SignInManager<VerityUser> _signInManager;
private readonly UserManager<VerityUser> _userManager;
private readonly IStudentQuesionsUOW _studentQuesionsUOW;
private readonly VerityLearn.DataAccess.VerityContext _context;
public StudentQuestionsModel(
VerityContext context,
SignInManager<VerityUser> signInManager,
UserManager<VerityUser> userMrg,
IStudentQuesionsUOW studentQuesionsUOW
)
{
_context = context;
_signInManager = signInManager;
_userManager = userMrg;
_studentQuesionsUOW = studentQuesionsUOW;
} // end public StudentQuestionsModel(VerityContext context, SignInManager<VerityUser> signInManager, UserManager<VerityUser> userMrg)
[BindProperty]
public QuestionViewModel QuestionViewModel { get; set; }
[BindProperty]
public Question Question { get; set; }
public async Task<IActionResult> OnPostAsync()
{
... Not sure what to do here ...
}
QuestionViewModel.cs
public class QuestionViewModel
{
public int QuestionId { get; set; }
public int ExamQuestionOrder { get; set; }
public string QuestionText { get; set; }
public bool? IsSingleSelection { get; set; }
public List<OptionViewModel> Options { get; set; }
}
OptionViewModel. Can student also give multiple answer?