将$ http.get()方法中的$ scope.object传递给asp.net web api

时间:2014-11-03 10:03:55

标签: c# angularjs asp.net-web-api

我正在做我的第一个angularsjs-asp.net web api项目。我正在尝试将一个$scope.user对象发送到asp.net web api,如下所示 -

AngularJS控制器代码 -

    $scope.user = {};
    $scope.navbarCollapsed = true;
    $scope.save = function () {
          $http.get('/api/Login', $scope.user).
             success(function (data, status, headers, config) {
                 $window.location.href = 'app/views/dashboard.html';

             }).
             error(function (data, status, headers, config) {
             alert(status);    
      });      
}

ASP.NET Web API代码:

public class LoginController : ApiController
{
    public HttpResponseMessage get( LoginUser user) //user is shown null
    {

    }
}

用户在服务器端显示为null。有什么帮助吗?

UPDATE ----------------

public class LoginUser
{
    public String LoginName { get; set; }

    public String LoginPassword { get; set; }
}

1 个答案:

答案 0 :(得分:3)

由于WebApi的复杂数据通常在请求正文中发送,因此您必须指定信息在网址中编码:

public HttpResponseMessage get([FromUri]LoginUser user)
{

}

并按如下方式发送给用户:

$http.get('/api/Login',
    {
        'params': $scope.user
    });

但是当您发送登录信息时,我建议您切换到另一个HTTP动词,例如POST

<强>更新

以下是POST动词的示例:

public HttpResponseMessage post(LoginUser user)
{

}
$http.post('/api/Login', $scope.user);