当我调试它显示空值时,我正在向Web API方法发布一些值。
下面是ajax调用的snipet代码,这里我传递的是dept_name
但它在web API方法中显示为null。
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。在web api方法中查看HR参数值。
答案 0 :(得分:1)
您回发的对象包含的属性名称与您的模型不匹配。
您的模型包含名为dept_name
的属性,但javascript对象包含一个名为DepartmntName
的属性。同样,其他名称都不匹配(Icon
除外)。假设您要将txtName
的值绑定到模型dept_name
属性,那么在脚本中,使用
var _customer = {};
_customer.dept_name = txtName.val(); // not DepartmntName
....
另请注意,没有理由将null
值添加到_customer
对象(控制器中默认为null
)。您也可以删除contentType: "application/json",
选项,只需在ajax调用中使用data: _customer,
,而不是将其字符串化。