ASP.NET Bind to IEnumerable
        Posted  
        
            by JFoulkes
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by JFoulkes
        
        
        
        Published on 2009-10-15T13:11:00Z
        Indexed on 
            2010/05/08
            7:08 UTC
        
        
        Read the original article
        Hit count: 349
        
Hi,
I'm passing a the type IEnumerable to my view, and for each item I output a html.textbox to enter the details into.
When I post this back to my controller, the collection is empty and I can't see why.
    public class Item
    {
        public Order Order { get; set; }
        public string Title { get; set; }
        public double Price { get; set; }
    }
My Get method:
public ActionResult AddItems(Order order)
    {
        Item itemOne = new Item
        {
            Order = order
        };
        Item itemTwo = new Item
        {
            Order = order,
        };
        IList<Item> items = new List<Item> { itemOne, itemTwo };
        return View(items);
    }
The View:
            <% int i = 0; foreach (var item in Model)
           { %>
            <p>
                <label for="Title">Item Title:</label>
                <%= Html.TextBox("items[" + i + "].Title") %>
                <%= Html.ValidationMessage("items[" + i + "].Title", "*")%>
            </p>
            <p>
                <label for="Price">Item Price:</label>
                <%= Html.TextBox("items[" + i + "].Price") %>
                <%= Html.ValidationMessage("items[" + i + "].Price", "*")%>
            </p>
        <% i++;
           } %>
The POST method:
 [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult AddItems(IEnumerable<Item> items)
    {
        try
        {
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }
At the moment i just have a breakpoint on the post method to check what i'm gettin back.
© Stack Overflow or respective owner