首页 > 解决方案 > 模型绑定返回 NULL

问题描述

我正在尝试将表单序列化并绑定到模型中,但是模型的子节点如何InsertToUsertbls返回NULL。有什么可以帮助我的:)

我有以下模型:

public class MangeAddUsers
    {
        public List<InsertToUsertbl> InsertToUsertbls { get; set; }
        public class InsertToUsertbl
        {
            public InsertToUsertbl()
            {

            }

            public int PX2ID { get; set; }
            public string CustomerNR { get; set; }
            public string SellerPersonCode { get; set; }
            public string NameOfCompany { get; set; }
            public string CompanyNo { get; set; }

        }
    }

JavaScript 获取数据并将它们加载到表单中:

<script>
    function uuidv4() {
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
            var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
            return v.toString(16);
        });
    }

    function myfunction() {

        $.ajax({
            type: "GET",
            url: "/Account/GetCustomerContactInfo",
            data: {ids: '10883'},  
            dataType: 'json',
            traditional: true,
            success: function (values) {
                var holderHTML = "";

         for (var i = 0; i < values.length; i++) {
             value = values[i]

         if (value != null) {
           var guid = uuidv4();
           holderHTML += '<tr id="row' + value.CustomerNo + '">';
           holderHTML += '<input type="hidden" name="InsertToUsertbls.Index" value="' + guid + '" />';
           holderHTML += '<td><input class="inpt-tbl" type="hidden" id="CustomerNR"  name="InsertToUsertbls[' + guid + '].CustomerNR" value="' + value.CustomerNo + '" /></td>';
           holderHTML += '<td><input class="inpt-tbl" type="hidden"  id="NameOfCompany"  name="InsertToUsertbls[' + guid + '].NameOfCompany" value="' + value.NameOfCompany + '" /></td>';
           holderHTML += '<td><input type="hidden" id="CompanyNo" name="InsertToUsertbls[' + guid + '].CompanyNo" value="' + value.CompanyNo + '" /></td>';
           holderHTML += '<input type="hidden" id="SellerPersonCode" name="InsertToUsertbls[' + guid + '].SellerPersonCode" value="' + value.SalgePersonCode + '" />';
           holderHTML += '</tr>';
                    }
                }

                $('#output').append(holderHTML);
            },

            error: function () {
                console.log('something went wrong - debug it!');
            }
        })
    };
</script>

当数据加载到表单中时:

    <form id="mangeUserFrom">
         <div id="output">
           <tr id="row10883">
            <input type="hidden" name="InsertToUsertbls.Index" value="fd3424ab-160d-4378-af65-ad2b790812ec">
            <td>
        <input class="inpt-tbl" type="hidden" id="CustomerNR" name="InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].CustomerNR" value="10883">
            </td>
            <td>
        <input class="inpt-tbl" type="hidden" id="NameOfCompany" name="InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].NameOfCompany" value="Some Name">
            </td>
            <td>
        <input type="hidden" id="CompanyNo" name="InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].CompanyNo" value="849">
            </td>
            <input type="hidden" id="SellerPersonCode" name="InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].SellerPersonCode" value="TT">
           </tr>
            </div>
    </form>
  <button type="button" id="createuser" onclick="PostForm();">POST</button>

用于序列化的 JavaScript:

<script>
    function PostForm() {

        var formdata = $("#mangeUserFrom").serializeArray();
        console.log(formdata);
        $.ajax({
            "url": '@Url.Action("MangeCreateUsers", "Account")',
            "method": "POST",
            "data": formdata,
            "dataType": "json",
            success: function (data) {


            },

            error: function () {
                console.log('something went wrong - debug it!');
            }

        });

    }
</script>

这是序列化的结果:

{name: "InsertToUsertbls.Index", value: "fd3424ab-160d-4378-af65-ad2b790812ec"}
{name: "InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].CustomerNR", value: "10883"}
{name: "InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].NameOfCompany", value: "Some Name"}
{name: "InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].CompanyNo", value: "849"}
{name: "InsertToUsertbls[fd3424ab-160d-4378-af65-ad2b790812ec].SellerPersonCode", value: "TT"}

这是我试图发布到的控制器方法:

  [HttpPost]
        public JsonResult CreateCustomers(CreateCustomers model)
        {
            return Json(model, JsonRequestBehavior.AllowGet);
        }

截图: 图片

标签: c#asp.net-mvc

解决方案


推荐阅读