我有一个View,允许用户一次将多个部分添加到系统中。这可以通过单击“添加”按钮来完成,该按钮添加了另一行输入字段:
function AddItem() {
$("#PartItems").append("<tr>" +
"<td><input type='text' name='Part[" + itemCount + "].Code' style='width:100px' /></td>" +
"<td><input type='text' name='Part[" + itemCount + "].ManufacturersCode' style='width:100px' /></td>" +
"<td><input type='text' name='Part[" + itemCount + "].Name' style='width:280px' /></td>" +
"<td style='min-width:100px;'><span class='inputunits'>@ViewBag.NumberFormat.CurrencySymbol<input type='text' name='Part[" + itemCount + "].Cost' style='width:75px' /></span></td>" +
"<td style='min-width:50px;'><input type='hidden' name='Part[" + itemCount + "].IsStockItem' value='false' /><input type='checkbox' name='Part[" + itemCount + "].IsStockItem' value='true' /></td>" +
"<td style='min-width:70px;'><span class='StockInput'><input type='text' name='Part[" + itemCount + "].QuantityInStock' style='width:50px' value='1' /></span></td>" +
"<td style='min-width:70px;'><span class='StockInput'><input type='text' name='Part[" + itemCount + "].LeadTime' style='width:50px' value='1' /></span></td>" +
"</tr>");
itemCount++;
}
提交后,字段将映射到StockItems列表:
public ActionResult Create(List<Models.StockItem> Part)
除了“IsStockItem”布尔值之外,这似乎适用于所有字段。在映射到数组中的布尔值时,是否需要执行一些特殊操作?
我已经尝试了上面的html代码,有/没有指定复选框的值,也没有隐藏字段,没有快乐。
答案 0 :(得分:0)
如果您尝试将“IsStockItem”字段更改为“StockItem”,并更新匹配类的getter / setter,该怎么办?
该字段的当前getter是isIsStockItem()?
答案 1 :(得分:0)
虽然我无法解决提交复选框的问题 - 但我设法找到了解决方法。我已将隐藏字段重命名为“IsStockItem”,以便将其映射到MVC中的类,而是将jQuery代码添加到复选框,以便在更改值时设置隐藏字段的值。
"<td style='min-width:50px;'><input type='hidden' name='Part[" + itemCount + "].IsStockItem' value='false' /><input type='checkbox' name='Part[" + itemCount + "].StockItemCheckbox' /></td>" +
和jquery代码:
$(document).ready(function () {
$('input[name*=StockItemCheckbox]').live("click", function () {
row = $(this).parent().parent();
if (this.checked) {
$(".StockInput", $(row)).show("slow");
$("input[name*=IsStockItem]", $(row)).val("true");
}
else {
$(".StockInput", $(row)).hide("slow");
$("input[name*=IsStockItem]", $(row)).val("false");
}
});
});