从 ajax 调用向 Web api 方法发布值为什么变为空?

Posting value to web api method from ajax call why going null?

当我调试显示空值时,我将一些值发布到 Web API 方法。

下面是 ajax 调用的代码片段,这里我传递 dept_name 但它在 web API 方法中显示为空。

var _customer = {};
            _customer.DepartmntName = txtName.val();
            _customer.DateCreated = null;
            _customer.DateModified = null;
            _customer.IsDeleted = null;
            _customer.ParentID = null;
            _customer.Icon = null;
            _customer.Paren = null;
            alert( _customer.DepartmntName);
            alert(_customer);
            $.ajax({
                type: "POST",
                url: "/api/AddDepSpc/InsertCustomer2",
                 data: JSON.stringify(_customer),
                contentType: "application/json",
                dataType: "json",
                success: function (r) {
                alert("success" + r);
               var row = $("#tblCustomers tr:last-child").clone(true);
                    //AppendRow(row, r.CustomerId, r.Name, r.Country);
      AppendRow(row,r.dept_name.r.date_created,r.date_modified,r.IsDeleted,
       r.ParentID.r.Icon,r.Paren);
                    txtName.val("");

                }
            });

下面是网络 api 方法的代码片段。

public class AddDepSpcController : ApiController
    {
        [Route("api/AddDepSpc/InsertCustomer2")]
        [HttpPost]
        public   master_department InsertCustomer2(master_department _customer)
        {           
            using (HRMEntities entities = new HRMEntities())
            {
                entities.master_department.Add(_customer);
                entities.SaveChanges();
                entities.SaveChanges();
            }
            return _customer;
        }      
    }

现在在调试模式下它显示 null 假设我已经将 HR 作为部门名称传递并且所有其余参数都是 null now.Expecting Web api 方法中的 HR 参数值。

您回发的对象包含 属性 个与您的模型不匹配的名称。

您的模型包含一个名为 dept_name 的 属性,但 javascript 对象包含一个名为 DepartmntName 的对象。同样,其他名称中的 none 匹配(Icon 除外)。假设您要将 txtName 的值绑定到模型 dept_name 属性,那么在脚本中,使用

var _customer = {};
_customer.dept_name = txtName.val(); // not DepartmntName
....

另请注意,没有理由将 null 值添加到 _customer 对象(它们在控制器中默认为 null)。您还可以删除 contentType: "application/json", 选项,只在 ajax 调用中使用 data: _customer, 而不是对其进行字符串化。