Summary
Add the fields in the list view, I added as hidden (Hiddenfor)
@for (int i = 0; i < Model.Dependentes.Count; i++)
{
@Html.HiddenFor(model => Model.Dependentes[i].Nome)
@Html.HiddenFor(model => Model.Dependentes[i].DataNascimento)
}
Complete Solution
Models of my example
public class Pessoa
{
public string Nome { get; set; }
public DateTime DataNascimento { get; set; }
public List<Dependente> Dependentes { get; set; }
}
public class Dependente
{
public string Nome { get; set; }
public DateTime DataNascimento { get; set; }
}
Controller
// GET: Pessoa/Edit/
public ActionResult Edit()
{
//Criação do objeto
Pessoa pessoa = new Pessoa()
{
Nome = "José",
DataNascimento = DateTime.Now,
Dependentes = new List<Dependente>()
{
new Dependente()
{ Nome = "João",
DataNascimento = DateTime.Now },
new Dependente()
{ Nome = "Maria",
DataNascimento = DateTime.Now }
}
};
return View(pessoa);
}
// POST: Pessoa/Edit/5
[HttpPost]
public ActionResult Edit(Pessoa pessoa) // Objeto com lista preenchida
{
try
{
// Lista de dois itens estão no objeto
return RedirectToAction("Index");
}
catch
{
return View();
}
}
View
@model WebApplication7.Models.Pessoa
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Pessoa</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Nome, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Nome, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Nome, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.DataNascimento, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.DataNascimento, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.DataNascimento, "", new { @class = "text-danger" })
</div>
</div>
@* Aqui está a lista sendo criado campos ocultos na tela para poderem ser postados para o controller*@
@for (int i = 0; i < Model.Dependentes.Count; i++)
{
@Html.HiddenFor(model => Model.Dependentes[i].Nome)
@Html.HiddenFor(model => Model.Dependentes[i].DataNascimento)
}
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Dude, are you trying to pass via form, via action, via jquery? If you have an example, it’s easier to understand and try to help you.
– Ayrton Giffoni
Possible duplicate of How to receive multiple fields from a view in the controller
– Randrade
What are objects like? How is the Action? Are you using Form? You have how to edit your question and put more information?
– Leonel Sanches da Silva