I'm trying to edit a list of items in a strongly-typed razor view. The templates don't give me the option to edit a list of objects in a single view so I merged the List view with the Edit view. I only need to edit one boolean field in a checkbox.
The problem is that i cant get the data back to the controller. How do i do it? FormCollection
? Viewdata
? Thanks in advance.
Here's the code:
Models:
public class Permissao
{
public int ID { get; set; }
public TipoPermissao TipoP { get; set; }
public bool HasPermissao { get; set; }
public string UtilizadorID { get; set; }
}
public class TipoPermissao
{
public int ID { get; set; }
public string Nome { get; set; }
public string Descricao { get; set; }
public int IndID { get; set; }
}
Controller Actions:
public ActionResult EditPermissoes(string id)
{
return View(db.Permissoes.Include("TipoP").Where(p => p.UtilizadorID == id));
}
[HttpPost]
public ActionResult EditPermissoes(FormCollection collection)
{
//TODO: Get data from view
return RedirectToAction("GerirUtilizadores");
}
View:
@model IEnumerable<MIQ.Models.Permissao>
@{
ViewBag.Title = "EditPermissoes";
}
@using (Html.BeginForm())
{
<table>
<tr>
<th></th>
<th>
Indicador
</th>
<th>
Nome
</th>
<th>Descrição</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.HasPermissao)
</td>
<td>
@Html.DisplayFor(modelItem => item.TipoP.IndID)
</td>
<td>
@Html.DisplayFor(modelItem => item.TipoP.Nome)
</td>
<td>
@Html.DisplayFor(modelItem => item.TipoP.Descricao)
</td>
</tr>
}
</table>
<p>
<input type="submit" value="Guardar" />
</p>
}