Angularjs 角度post将数据以null形式发送到webapi
我不知道我在代码中做错了什么,我试图向webapi控制器发送一些值,它通过调用正确的方法来设置断点,但我总是将参数设置为null。 我试过用JSONStringfy 设置标题和许多方法,但都失败了 下面是angular方法的一些代码片段Angularjs 角度post将数据以null形式发送到webapi,angularjs,html,asp.net-mvc-4,asp.net-web-api,Angularjs,Html,Asp.net Mvc 4,Asp.net Web Api,我不知道我在代码中做错了什么,我试图向webapi控制器发送一些值,它通过调用正确的方法来设置断点,但我总是将参数设置为null。 我试过用JSONStringfy 设置标题和许多方法,但都失败了 下面是angular方法的一些代码片段 $http.post('/api/EmployeeData/' + p.EmpNo, JSON.stringify(p)) .success(function(data) { Alert(ok) }).error(function(data, sta
$http.post('/api/EmployeeData/' + p.EmpNo, JSON.stringify(p))
.success(function(data) {
Alert(ok)
}).error(function(data, status, headers, config) {
data;
});
其他方式
$http({
url: '/api/EmployeeData/' + p.EmpNo,
data: JSON.stringify(p), //or this as well p,// or {Employee: p},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
} //or {'Content-Type': 'application/json'}
})('/api/EmployeeData/' + p.EmpNo, JSON.stringify(p)).success(function(data) {
Alert(ok)
}).error(function(data, status, headers, config) {
data;
});
API控制器的代码段
public HttpResponseMessage PostEmployee([FromBody] Employee employee) {
if (ModelState.IsValid) {
db.Employees.Add(employee);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, employee);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new {
id = employee.EmpNo
}));
return response;
} else {
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
**但是,即使我将参数的类型也更改为字符串,我仍然将Employee设置为null**
HttpResponseMessage to IHttpActionResult
但还是一样
我不知道我做错了什么,任何建议都是值得赞赏的
提前谢谢难道“p”已经是json了吗?不需要JSON.stringify:
$http.post('/api/EmployeeData/'+ p.EmpNo, p)
此外,您的PostEmployee方法缺少[HttpPost]属性。您是否在浏览器中查看了网络请求,以查看它是否向端点发送了正确的数据?如果帖子中的主体是正确的,那么问题就出在API控制器上。是的,我看了,但还是一样的。看看你的角度控制器代码会很有帮助。我已经测试过,它与chrome一起工作,似乎与IE不一起工作。是不是IE 10偶然出现的?您的问题似乎类似于:感谢您的回复,我尝试了所有使用json和不使用json的场景。。。你也可以看到我解释的代码。