1

下面是我用来创建 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 数组中的数字转换为字符串的代码,但我仍然没有得到任何通过。(模型中的列表为空)。

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

4

1 回答 1

5

试试这个:

$.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); 
    } 
});
于 2012-10-04T18:25:56.587 回答