2009-10-22 3 views
0

У меня есть следующие, на мой взгляд:Получить ViewData IList назад на постбэка в ASP.NET MVC

<%using (Html.BeginForm()) {%> 
<% foreach (var item in Model.Cart) { %> 
    <div> 
     <%= Html.TextBox("Cart.Quantity", item.Quantity, new { maxlength = "2" })%> 
     <%= Html.Hidden("Cart.ItemID", item.ItemID)%> 
    </div> 
<% } %> 
<input name="update" type="image" src="image.gif" /> 

Я тогда этот код в мой контроллер:

public ActionResult Index() 
    { 
     CartViewData cartViewData = new CartViewData(); 
     IList<Item> items = ItemManager.GetItems(); 

     cartViewData.Cart = items; 
     return View("Index", cartViewData); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Index(CartViewData cartViewData) 
    { 
     // cartviewData is null 
    } 

Есть способ захватить список по обратной передаче, чтобы увидеть, изменились ли значения в текстовых полях?

Благодаря

Ниже приведен упрощенный пример, так как это было предложено:

<% for (int i = 0; i < Model.Cart.Count; i++) { %> 
    <a href="javascript:void(0);" onclick="removeItem(<%= Model.Cart[i].ShoppingCartItemID %>);">Remove</a> 
<% } %> 

Надеется, что это помогает.

ответ

1

Это простейший способ сделать это - имя каждого телеги контроля элемента с этим форматом:

<input type="text" name="Items[0].Quantity" /> 

Если 0 соответствует индексу элемента в коллекции элементов. Затем переместите коллекцию элементов в собственность на тележке, так что вы модель выглядит примерно так:

class CartViewData 
{ 
    public CartViewData() 
    { 
     this.Items = new List<Item>(); 
    } 

    public IList<Item> Items { get; private set; } 

    class Item 
    { 
     public int Quantity { get; set; } 
    } 
} 

Тогда DefaultModelBinder будет связывать значения в модели.

+0

Спасибо! Это сделал трюк. В другом примечании, есть ли лучший способ сделать это? Я не большой поклонник создания «имени» динамически, чтобы добиться этого. – Thomas

+0

Вы можете создавать html-вспомогательные методы для создания элементов ввода с использованием лямбда-выражений и html-вспомогательных методов для создания элементов ввода для коллекции. – eulerfx

Смежные вопросы