【问题标题】:AngularJS WebAPI $http.get Object values are NullAngularJS WebAPI $http.get 对象值为 Null
【发布时间】:2017-03-02 20:52:22
【问题描述】:

我对 WebAPI/AngularJS 比较陌生,并且在使用 $http.get() 将对象从 AngularJS 控制器传递到 WebAPI 控制器时遇到问题。

AngularJS 控制器代码:

$http.get('api/Employee/GetVacancyStatus?emp='+thisData[0])
.then(function (response, success) {
    if (response.data == false){
        alert("cube/office occupied");
    }
    else // continue with employee move
    {
        do some stuff...
    }
}, function (response, error) {
   alert(response);
});

Web Api 控制器代码:

 [System.Web.Http.HttpGet, System.Web.Http.ActionName("GetVacancyStatus")]
    public bool GetVacancyStatus([FromUri] employee emp)
    {
        //return repository.GetVacStatus(moveQuery);
        return false;
    }

当我调试代码时,该对象似乎已填充到 AngularJS 控制器中(至少从我的 Chrome 开发人员工具来看):

另一方面,当执行到 WebAPI 控制器时,似乎对象未初始化,我无法确定我做错了什么。

我确实有一个 $http.put() 似乎正在传递这样的对象:

 $http.put('api/Employee/PutEmployee', emp)

提前感谢您的帮助。

【问题讨论】:

  • 不能通过 URL 传递对象。你只能传递字符串。
  • 您可能应该只是传递员工的 ID。了解空置状态是否需要其他属性?此外,它们是来自客户端的值,因此无论如何您都不能相信它们是正确的。

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


【解决方案1】:

您要传入的员工对象的每个属性都必须是单独的查询参数。您必须在您的 javascript 中执行以下操作:

$http.get('api/Employee/GetVacancyStatus?Id='+thisData[0].Id + '&fName=' + thisData[0].fName)

您不必使用此方法更改控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多