2016-03-25 27 views
1

我使用angualarJS和asp.net網站API對MVC控制器的方法後得到的錯誤,但我的代碼總是打破上在asp.net控制器POST請求,這是我我使用AngularJS

錯誤

在 EntityFramework.dll中發生了「System.ArgumentNullException」類型的異常,但未在用戶代碼中處理其他 信息:值不能爲空。

這是MVC方法

// POST: api/ProductCategory 
    public HttpResponseMessage Post(ProductCategory pcate) 
    { 
     if (ModelState.IsValid) 
     { 

      this.pcat.pcategory.Add(pcate); 
      this.pcat.SaveChanges(); 
      return Request.CreateResponse(HttpStatusCode.Created, pcate); 
     } 
     else 
     { 
      return Request.CreateResponse(HttpStatusCode.BadRequest, pcate); 
     } 
    } 

這是angularJS控制器先進

+0

您可以顯示控制器的JSON請求和輸入模型嗎? –

+0

這是JSON VAR OBJ = $ .PARAM({ pcate:{ 名稱:$ scope.Name } }); –

+1

如果'pcate'不是'null',你是否在調試模式下檢查過?你有沒有試圖檢查實際發佈的內容? –

回答

1

您正在創建一個局部變量obj這裏:

var obj = { 
    Name: $scope.Name 
}; 

但是當你試圖張貼this.obj到您的API:

$http.post("/api/productCategory/", this.obj) 

要麼創建this.obj而不是var obj或在您的帖子上通過obj而不是this.obj

+0

上帝保佑你,天才!這是工作!很好的觀察! –

0

var appcat = angular.module("PharmacyControllers", ['ngRoute']); 

appcat.controller("createController", ['$scope', '$http', '$location', function ($scope, $http, $location) 
{ 
    $scope.submit = function() 
    { 
     //converting the object to JSON 
     var obj = { 

      Name: $scope.Name 
     }; 
     //alert(obj); 
     $http.post("/api/productCategory/", this.obj).success(function (data) { 
      $location.path('/list'); 
     }).error(function (data) { 

      $scope.error = "An error has occured while adding product Category! " + data.ExceptionMessage; 
     }); 
    } 

}]); 

感謝嘗試從改變:

$http.post("/api/productCategory/", this.obj).success(function (data) { 

到:

$http.post("/api/productCategory/", { pcate: obj }).success(function (data) { 
+0

這不行!我也嘗試var obj = $ .param({\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'') 但仍然是相同的錯誤 –

+0

@LJJanneh ProductCategory類是什麼樣的? – DaveB