I have a problem in ASP.NET. I made a list of checkboxes, and I want to post the selected values back to the controller. Problem is, the model I recieve in my controller is null.
My controller:
[HttpPost]
// POST: /Checklist/index
public ActionResult Index(Zoeken systemencheckboxenss)
{
var zoekresultaat = _db.VW_Checks.AsQueryable();
if (systemencheckboxenss.Systemen != null)
{
foreach (var item in systemencheckboxenss.Systemen)
{
if(item.isSelected == true)
{
zoekresultaat = zoekresultaat.Where(sy => (sy.Systeemnaam.Contains(item.Systeemnaam)));
}
}
}
var systemen = _db.SYSTEEMs;
//Lijst van systemen en of het geslecteerd is
var systeemnamen = new List<CheckboxSysteem>();
//vult de lijst
foreach (var i in systemen)
{
systeemnamen.Add(new CheckboxSysteem
{
Systeemnaam = i.SYSTEEMNAAM,
isSelected = false,
});
}
var models = new Zoeken
{
VwChecks = zoekresultaat.ToList(),
Systemen = systeemnamen,
};
return View(models);
}
And here is my View:
@model UsabilityChecklistApp.ViewModels.Zoeken
@{
ViewBag.Title = "Index";
}
<h2>Checks</h2>
@using (Html.BeginForm("Index", "Checklist", Model, FormMethod.Post))
{
<table class="table">
@foreach (var item in Model.Systemen)
{
<tr>
<td>
@Html.HiddenFor(modelItem => item.Systeemnaam)
@Html.HiddenFor(modelItem => item.isSelected)
@Html.DisplayFor(modelItem => item.Systeemnaam)
</td>
<td>
@Html.CheckBoxFor(modelItem => item.isSelected)
</td>
</tr>
}
</table>
<input type="submit" value="Zoek" />
}
And ofcourse my ViewModel:
using System.Web;
using UsabilityChecklistApp.Models;
namespace UsabilityChecklistApp.ViewModels
{
public class Zoeken
{
public List<VW_Checks> VwChecks { get; set; }
public List<CheckboxSysteem> Systemen { get; set; }
}
public class CheckboxSysteem
{
public string Systeemnaam { get; set; }
public bool isSelected { get; set; }
}
}
If I did not provide information to solve the problem, please ask for it.
EDIT: I must use checkboxes, no other options possible