I suppose you have a situation like this:
public class Model {
public List<..> List { get; set; }
...
}
public class MyController
{
public ActionResult List() {
return View(new Model { List = new List<..> { /* some items */ } });
}
[HttpPost]
public ActionResult AddToList(Model model, string itemText) {
model.List.Add(/* another item with specified text*/);
return View("List", model);
}
}
In the displayed list page you either have a 1 item added with the AddToList action or the entire list of items initialized in the List action. What happens is natural, because you don't post the list back.
If this is the case, then you have to post back the entire model, including the list itself in order to add an item to the existing list.
This is really a problem of generating the correct View for the List page. The form that triggers the AddToList action must contain the date of the entire model/list. The HTML generated by the view should look something like this:
...
<form method="POST" action="/MyController/AddToList">
<input type="hidden" name="model.List[0]" value="value1" />
...
<input type="hidden" name="model.List[N]" value="valueN" />
New item text: <input type="text" name="itemText" />
...
</form>
...