发送个别参数时,无法点击动作结果。当发送对象时,它会被击中

时间:2015-09-21 08:59:57

标签: angularjs asp.net-mvc-5 httprequest asp.net-web-api2

我有一个应用程序包含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命中。

使用参数拨打电话时我错过了什么?将非常感谢帮助。

1 个答案:

答案 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