数据绑定器未将 JSON 数组对象绑定到模型中的列表字段



下面是我用来创建一个 JSON 对象的 JavaScript 代码,用于将值返回给控制器。 vm 引用由数字填充的其他位置的数组。我创建了一个数字数组的对象。

$("#saveUser").live("click", function() {
            var username = $("#UserName").val();
            var email = $("#Email").val();
            var phoneNumber = $("#PhoneNumber").val();
            var personCode = $("#PersonCode").val();
            var managerId = $("#ManagerId").val();
            var officeId = $("#OfficeId").val();
            var address = $("#Address").val();
            var activeInd = $("#ActiveInd").val();
            var roles = [];
            for(i=0;i<vm.RoleDdList().length ;i++) {
                    roles.push(vm.RoleDdList()[i].role());   
                }
            var jsonObj = 
                {
                    username:username,
                    email:email,
                    phoneNumber:phoneNumber,
                    personCode:personCode,
                    managerId:managerId,
                    officeId:officeId,
                    address:address,
                    activeInd:activeInd,
                    roles:roles
            };

            $.ajax({
               type:"POST",
               async:true,
               url:"Users/Save",
               data:jsonObj,
               dataType: "json",
               success:function (data) {
                   dlg.dialog("close");
               },
               error:function (data) 
               {
                   alert("An error occurred when saving the contact.");    
               }
            });
        });

控制器方法:

[HttpPost]
    public void Save(UsersModel model)
    {
        //code
    }

我可以使用调试器看到角色字段未传递给控制器。它是在客户端生成和填充的。该模型需要该特定字段的字符串列表。所有其他对象都将通过并匹配。

我已经更改了代码以将 vm 数组中的数字转换为字符串,但我仍然没有得到任何传递。(模型中的列表为空)。

有人知道我做错了什么吗?

试试这个:

$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    url: '/Users/Save', 
    data: JSON.stringify(jsonObj), 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 
        console.debug(data); 
    }, 
    error: function (data) { 
        console.debug(data); 
    } 
});

最新更新