[Tôi giải quyết này bản thân mình, xem câu trả lời của tôi cho nguyên nhân]ASP.NET MVC model binding một IList <> tham số
Tôi đang gặp khó khăn về giá trị hình thức cho một IList <> lập luận trong một phương pháp điều khiển đặt đúng.
lớp điều khiển của tôi trông như thế này:
public class ShoppingBasketController : Controller {
public ActionResult Index() {
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(IList<ShoppingBasketItem> items) {
Session["basket"] = items; // for testing
return RedirectToAction("Index");
}
}
public class ShoppingBasketItem {
public int ItemID;
public int ItemQuantity;
}
Dạng hơi tỉa:
<% using (Html.BeginForm("Add", "ShoppingBasket")) { %>
<% int codeIndex = 0;
foreach (Product product in products) { %>
<%= Html.Hidden("items[" + codeIndex + "].ItemID", product.Id) %>
<%= Html.TextBox("items[" + codeIndex + "].ItemQuantity", "0", new { size = "2"}) %>
<% codeIndex++;
}
} %>
nào sản xuất đánh dấu như:
<form action="/Basket/Add" method="post">
<input id="items[0]_ItemID" name="items[0].ItemID" type="hidden" value="1" />
<input id="items[0]_ItemQuantity" name="items[0].ItemQuantity" size="2" type="text" value="0" />
<input id="items[1]_ItemID" name="items[1].ItemID" type="hidden" value="2" />
<input id="items[1]_ItemQuantity" name="items[2].ItemQuantity" size="2" type="text" value="0" />
<input id="items[2]_ItemID" name="items[2].ItemID" type="hidden" value="3" />
<input id="items[2]_ItemQuantity" name="items[2].ItemQuantity" size="2" type="text" value="0" />
</form>
Tôi đã kiểm tra các giá trị hình thức mà được gửi và chúng đúng. Số lượng chính xác của ShoppingBasketItem
cũng được đưa vào Session["basket"
], tuy nhiên cả hai ItemID
và ItemQuantity
của mỗi số đều bằng không. Dường như nó giải mã chính xác danh sách các giá trị biểu mẫu, nhưng không tự mình chọn lên các thuộc tính.
Tôi đang sử dụng MVC RC2 và dựa trên số article by Scott Hanselman Tôi chắc chắn rằng mã của tôi là chính xác. Tui bỏ lỡ điều gì vậy?
Có cách nào để làm cho công việc này với giao diện người dùng mẫu, sử dụng một EditorFor (m => m.product) cho mỗi lần lặp lại trong Sản phẩm? –
Cảm ơn. Tôi thấy điều này thực sự hữu ích. :) –