0

I am making an ASP.NET/MVC app for some survey questions. I made a viewmodel that contains the questionid, the questiontext and the answertext. In the controller I create a list of these viewmodel and fill in the questionid and questiontext. I send the list as a model to the view. All the questions are shown to the user. After the users fills in the answers to the questions I want the list to be sent back to the controller. But the list is allways null.

This is the code in my controller:

public class EnqueteController : Controller
{
    private BootCampEval.Models.DB_A2A0BC_bcenqEntities db = new Models.DB_A2A0BC_bcenqEntities();

    // GET: Enquete
    [Authorize]
    public ActionResult CreateEnquete(int enqid = 1)
    {
        List<VMQuestion> questions = new List<VMQuestion>();
        foreach (var q in db.GetQuestionsForEnquete(enqid))
        {
            var viewmodel = new VMQuestion();
            viewmodel.EnqueteTitle = q.EnqTitle;
            viewmodel.EnqueteDate = q.EnqDate;
            viewmodel.QuestionID = q.QuestionID;
            viewmodel.Question = q.Question;
            viewmodel.Answer = "";
            questions.Add(viewmodel);
        }
        return View(questions);
    }


    [Authorize]
    [HttpPost]
    public ActionResult HandleEnquete(List<VMQuestion> answers)
    {
        foreach (var a in answers)
        {
            var answer = new Answers();
            answer.QuestionID = a.QuestionID;
            answer.UserID = User.Identity.GetUserId();
            answer.Answer = a.Answer;
            db.Answers.Add(answer);
        }

        return View();
    }

    public ActionResult Index()
    {
        return View();
    }
}

And this is my view:

@model IEnumerable<BootCampEval.ViewModels.VMQuestion>
@{
    ViewBag.Title = "CreateEnquete";
    int qnr = 1;

}

<h2>Enquete</h2>
@using (Html.BeginForm("HandleEnquete", "Enquete", FormMethod.Post))
{
    <table>
        @foreach (var q in Model)
        {
            <tr>
                <td>
                    <h3>@qnr. @Html.DisplayFor(modelItem => q.Question)</h3>
                </td>

            </tr>
            <tr>
                <td>
                    @Html.TextAreaFor(itemModel => q.Answer, new { @class = "form-control", style = "min-width: 100%", @id = "Q" + @qnr })
                </td>
            </tr>
            { qnr++; }
        }

    </table>

    <h2 style="text-align:center">Dank voor het invullen en je inzet!</h2>
    <input type="submit" value="Insturen" class="btn btn-block" />
}
  • Please see if this question is relevant - https://stackoverflow.com/questions/17037858/how-to-pass-ienumerable-list-to-controller-in-mvc-including-checkbox-state – Jaybird Dec 08 '17 at 07:25
  • your model is confusable just check and correct your model. Try [This](https://stackoverflow.com/questions/20333021/asp-net-mvc-how-to-pass-data-from-view-to-controller) wil help you – M.Y.Mnu Dec 08 '17 at 07:25

0 Answers0