我有一个应用程序包含ASP.Net WebAPI 2和使用angularJS的Web项目。问题是当我用参数调用API时,它没有命中。当发送对象时,它会被击中。
anjularJS代码:
带参数的
$http({
cache: false
, method: 'POST'
, url: 'http://localhost:51341/api/User/UpdateUser'
, data: { userId: $scope.UsersId, fullName: $scope.name }
}).success(function (data, status, headers, config) {
})
.error(function (data, status, headers, config) {
});
Webapi代码
[HttpPost]
public ApiResponse UpdateUser(int userId, string fullName)
{
return this.Response(true, MessageTypes.Success, "User has been saved successfully.");
}
包含对象
var model = { userId: $scope.UsersId, fullName: $scope.name };
$http({
cache: false
, method: 'POST'
, url: 'http://localhost:51341/api/User/UpdateUser'
, data: model
}).success(function (data, status, headers, config) {
})
.error(function (data, status, headers, config) {
});
webapi代码
[HttpPost]
public ApiResponse UpdateUser(User model)
{
return this.Response(true, MessageTypes.Success, "User has been saved successfully.");
}
用户类
public class User
{
public int UserId { get; set; }
public string FullName { get; set; }
public int Age { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
}
当使用参数调用时,api不会被命中。但是当用Object调用时,api GETS命中。
使用参数拨打电话时我错过了什么?将非常感谢帮助。
答案 0 :(得分:1)
来自WebApi docs:
最多允许一个参数从邮件正文中读取。所以 这不起作用:
// Caution: Will not work! public HttpResponseMessage Post([FromBody] int id, [FromBody] string name) { ... }
有关其他信息,我建议您阅读:
https://damienbod.wordpress.com/2014/08/22/web-api-2-exploring-parameter-binding/ https://stackoverflow.com/a/24629106/3316654