Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List of models in Model in MVC

I have two models:

class ModelIn{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
}

class ModelOut{
    public ModelOut(){ People = new List<ModelIn>();}
    public List<ModelIn> People { get; private set;}
    public string Country { get; set; }
}

And I have Controller editing ModelOut:

public ActionResult People()
{
    ...
    return View(SomeModelOutInstanceWith3People);
}
[HttpPost]
public ActionResult(ModelOut items)
{
    ...
}

In view I have sth like:

<% using (Html.BeginForm()) { %>
    <%: Html.EditorFor(m => Model.Country) %>
    <% for(int i = 0; i < Model.People.Count; ++i){ %>
        <%: Html.EditorFor(m => Model.People[i].FirstName) %>
        <%: Html.EditorFor(m => Model.People[i].LastName) %>
        <%: Html.EditorFor(m => Model.People[i].Address) %>
    <% } %>
    <input type="submit" />
<% } %>

It works all OK, but in post action I have empty ModelOut items. I can see in logs that data is sent correctly.

I have tried everything, nothing works.

like image 336
Ari Avatar asked Sep 05 '12 15:09

Ari


1 Answers

Have you tried simply <%: Html.EditorFor(m => m.People) %> ?

MVC should loop through the list by itself.

Also, watch out how you specify your lambdas, it should be m => m rather than m => Model.

PS. I use MVC3...

like image 144
Jakub Konecki Avatar answered Oct 05 '22 23:10

Jakub Konecki