在MVC阵列中忽略复选框值

时间:2014-02-03 14:00:14

标签: entity-framework asp.net-mvc-4

我有一个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代码,有/没有指定复选框的值,也没有隐藏字段,没有快乐。

2 个答案:

答案 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");
        }
    });
});