Null参数使用$ http.post,AngularJS

时间:2015-02-25 09:31:25

标签: c# json angularjs

我得到“id”的空参数。 如果我没有JSON.Stringify id我得到JSON原语错误。

$scope.deleteSite = function (id) {
    $http.post(ROOT + 'SiteList/Delete/', JSON.stringify(id)) //null id
    //$http.post(ROOT + 'SiteList/Delete/', id) //Invalid JSON primitive: 5f6d794f-bf13-4480-9afd-3b10d7b6ae32.
        .success(function (result) {
            // log to console?
        }).
        error(function (data, status, headers, config) {
            // log to console?
        });

这是我的siteList删除控制器。

public JsonResult Delete(String id)
    {
        try
        {
            var convertedID = new Guid(id);
            _siteService.Delete(convertedID); 
            return Json("OK", JsonRequestBehavior.AllowGet);
        }
        catch (Exception e)
        {
            return Json("Error" + e.Message);
        }

    }

1 个答案:

答案 0 :(得分:0)

注意,您也可以使用angular.toJson。我认为可能会更好 - 但如果您愿意,可以查看实施差异。

这是Web Api吗?

Web Api:

你必须配置params,因为delete以这种方式工作。

$scope.deleteSite = function (id) {
  $http.delete(ROOT + 'SiteList', { params: { id: id }}) 
    .success(function (result) {
      // log to console?
    }).
    error(function (data, status, headers, config) {
      // log to console?
    });
}

控制器操作,[FromUri]是必需的,因为您配置了参数:

public JsonResult Delete([FromUri] Guid id)
{
  try
  {
    _siteService.Delete(id); 
    return Json("OK", JsonRequestBehavior.AllowGet);
  }
  catch (Exception e)
  {
    return Json("Error" + e.Message);
  }

}

未配置的参数表示:

$scope.deleteSite = function (id) {
  $http.delete(ROOT + 'SiteList/' + id ) 
    .success(function (result) {
      // log to console?
    }).
    error(function (data, status, headers, config) {
      // log to console?
    });
}

控制器操作:

public JsonResult Delete(Guid id)
{
  try
  {
    _siteService.Delete(id); 
    return Json("OK", JsonRequestBehavior.AllowGet);
  }
  catch (Exception e)
  {
    return Json("Error" + e.Message);
  }

}

如果这不是Web Api,那么您只需要从请求数据中创建一个对象。

<强> MVC

$scope.deleteSite = function (id) {
  $http.post(ROOT + 'SiteList/Delete/', { id: id})
    .success(function (result) {
      // log to console?
    }).
    error(function (data, status, headers, config) {
      // log to console?
    });
}

控制器操作:

public JsonResult Delete(Guid id)
{
  try
  {
    _siteService.Delete(id); 
    return Json("OK", JsonRequestBehavior.AllowGet);
  }
  catch (Exception e)
  {
    return Json("Error" + e.Message);
  }

}