Получить данные формы теста MCQ с помощью ASP. NET MVC Action - PullRequest
0 голосов
/ 01 августа 2020

У меня есть этот метод действия ASP. NET MVC для обработки данных формы теста MCQ с переменным количеством вопросов. Я не могу найти способ создать модель или что-то еще для получения данных формы в действии.

Я отправляю вопросы в представление, используя это IEnumerable<ExamQuestionViewModel>.

Это модель представления

 public class ExamQuestionViewModel
 {
        public Guid QuestionId { get; set; }
        public string QContent { get; set; }
        public short Mark { get; set; }
        public string OptionA { get; set; }
        public string OptionB { get; set; }
        public string OptionC { get; set; }
        public string OptionD { get; set; }
 }

Мое представление такое

@model IEnumerable<app.Models.ExamQuestionViewModel>
@{
    ViewBag.Title = "StartExam";
    Layout = null;
}

<h2>StartExam</h2>

@using (Html.BeginForm("SubmitExam", "Examinations", FormMethod.Post,new { id = ViewData["examId"] }))
    {
     @Html.AntiForgeryToken()

    foreach (var item in Model)
    {

    <div class="row ml-4 my-4">

    <h4>@item.QContent</h4>
    <div class="form-group row">
        <div class="form-check">
            <input class="form-check-input" type="radio" name="@item.QuestionId" id="gridRadios1" value="@item.OptionA">
            <label class="form-check-label" for="gridRadios1">
                @item.OptionA
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input" type="radio" name="@item.QuestionId" id="gridRadios2" value="@item.OptionB">
            <label class="form-check-label" for="gridRadios2">
                @item.OptionB
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input" type="radio" name="@item.QuestionId" id="gridRadios3" value="@item.OptionC">
            <label class="form-check-label" for="gridRadios3">
                @item.OptionC
            </label>
        </div>

        <div class="form-check">
            <input class="form-check-input" type="radio" name="@item.QuestionId" id="gridRadios3" value="@item.OptionD">
            <label class="form-check-label" for="gridRadios3">
                @item.OptionD
            </label>
        </div>
    </div>
    </div>
    }

    <input type="submit" value="submit"/>

}

Есть ли способ получить данные формы, используя ту же модель представления?

Я пробовал используя FormCollection:

[HttpPost]
public ActionResult SubmitExam(FormCollection form)
{
    // store the data
    return Content("success");
}

Но объект 'form' равен нулю, и я не делаю этого, если это правильный метод.

Заранее спасибо

...