2

我送整數數組到Web API控制器的方法成功地利用angularjs $資源自定義方法,無需定義PARAMS發送與其它參數數組到一個網頁API。當我使用數組類型參數添加其他參數並在$ resource自定義方法中定義它時,則會成功接收其他參數,但數組發現爲空。 這裏是只有數組工作正常的代碼。 AngularJS服務如何使用angularjs

var Product_Service = $resource('api/Product/:productId', { productId: '@id' }, 
    { 
     'update': { method: 'PUT' }, 
     'bulkDelete': { 
      method: 'POST', 
      url: 'api/Product/BulkDelete', 
      isArray:true 
     } 
    } 

調用它像這樣(直接傳遞數組)

bulkDelete: function (productIds) { 
       var deferred = $q.defer(); 
       Product_Service.bulkDelete(productIds, function (response) { 
        deferred.resolve(response); 
       }, function (response) { 
        deferred.reject(response); 
       }); 
       return deferred.promise; 
      }, 

服務器端:

[Route("BulkDelete")] 
    public HttpResponseMessage BulkDelete(int[] ProductIds) 
    { 

     return Request.CreateResponse(HttpStatusCode.OK); 
    } 

問題: 欲接收這個數組與另一個參數,但在這種情況下數組接收值爲null。

[Route("BulkDelete")] 
    public HttpResponseMessage BulkDelete(int[] ProductIds,string hi) 
    { 
     //now ProductIds is null with another string hi parameter 
     return Request.CreateResponse(HttpStatusCode.OK); 
    } 

angularjs服務:

'bulkDelete': { 
      method: 'POST', 
      url: 'api/Product/BulkDelete', 
      isArray:true, 
      params:{ 
       productIds:'@productIds', 
       hi:'@hi' 
      } 
     } 

現在打電話是這樣的,

bulkDelete: function (productIds) { 
       var deferred = $q.defer(); 
       Product_Service.bulkDelete({productIds:productIds,hi:'hi how'}, function (response) { 
        deferred.resolve(response); 
       }, function (response) { 
        deferred.reject(response); 
       }); 
       return deferred.promise; 
      }, 

在哪裏的問題,這可能嗎?如果是的話我需要修改?

回答

4

測試,它的工作

API控制器

[Route("api/Product/BulkDelete")] 
[HttpPost] 
public HttpResponseMessage BulkDelete(string hi, int[] productIds) 
{ 
      //now ProductIds is null with another string hi parameter 

      return Request.CreateResponse(HttpStatusCode.OK); 
} 

資源

var Product_Service = $resource('api/Product/:productId', { productId: '@id' }, 
    { 
     'update': { method: 'PUT' }, 
     'bulkDelete': { 
      method: 'POST', 
      url: 'api/Product/BulkDelete', 
      isArray:true, 
      params:{ 

       hi:'@hi' 
      } 
     } 
    } 

CALL TO API

var productIds = [1, 2, 3, 4]; 
Product_Service.bulkDelete({ hi:'hello' },productIds, function (response) { 
console.log(response) 
}); 
+0

非常感謝曾在GO! – ahmadalibaloch 2014-09-05 11:18:39