我认为我有以下内容:
<%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
}
有没有办法在回发上抓取List以查看文本框中的值是否已更改?
由于
以下是请求后的简化示例:
<% for (int i = 0; i < Model.Cart.Count; i++ ) { %>
<a href="javascript:void(0);" onclick="removeItem(<%= Model.Cart[i].ShoppingCartItemID %>);">Remove</a>
<% } %>
希望这有帮助。
答案 0 :(得分:1)
这种最简单的方法是使用以下格式命名每个购物车项目控件:
<input type="text" name="Items[0].Quantity" />
其中0对应于items集合中项目的索引。接下来,将items集合移动到购物车上的属性,以便您的模型看起来像这样:
class CartViewData
{
public CartViewData()
{
this.Items = new List<Item>();
}
public IList<Item> Items { get; private set; }
class Item
{
public int Quantity { get; set; }
}
}
然后DefaultModelBinder将值绑定到模型。