如何在angular $ http.post中传递对象和值,并在asp .net web api中获取它们

时间:2017-07-31 18:58:47

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

我想将多个对象和一个值从angular传递给asp .net web Api。

我的js:

 var productStockArray =$scope.ProductStockArray;
        var challan = 20;
    $http.post(dataUrl + "StockProductApi/InsertStockdata", { params: {  ProductStockArray: productStockArray, Challan: challan } })
              .then(function (data) {

此处productStockArray如下所示:callan是单值

{ProductCode: "Pr- 001", ProductName: "T-Shirt", DealerPrice: 5, profitPercentage: 5, freePc: 5}
{ProductCode: "abc6", ProductName: "Luxs", originalPc: 455, freePc: 5, profitPercentage: 5}

我的WebApi:

   [HttpPost]
    [Route("api/StockProductApi/InsertStockdata/")]
    public HttpResponseMessage InsertStockdata(IEnumerable<StockProduct> ProductStockArray, int Challan)
        {
---------
}
  

N.B:为简洁起见,避免使用整个代码。

如果我只在角度和webapi中传递一个参数(对象),那就没关系。但是当我想传递两个参数(对象和int)时,它在控制台中显示未找到错误。如果我传递两个参数(int和int),那好吧。 我的问题是我可以使用角度http.post方法将参数(对象和int)传递给web api吗?

我可以得到一个参数(只有对象)。但我想将2个参数(对象和int)传递给web api。 我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

$http.post(dataUrl + "StockProductApi/InsertStockdata?intValue="+x+"&object="+obj)
        .then(function(response){
            defer.resolve(response);
        },function(error){
            defer.reject(error);
        });

答案 1 :(得分:0)

此格式允许您发布单个项目。您可以将对象作为项目的一部分(例如JSON)发送,然后将单个参数作为url的一部分包含在内,或者在项目本身中包含这两个参数。

$http.post(webUrl, item).then(function (response) {
        resolve(response)
    }, function (error) {
        reject(error);
    });

答案 2 :(得分:0)

继续我的评论,对于你的角度结束:

$http.post(url, angular.toJson({ ProductStockArray: productStockArray, Challan: challan }))
.then(
(response) => {
    resolve(response);
},
(error) => {
    reject(error);
});

关于如何解析.net服务器上发送的JSON对象,请参阅以下帖子:How to pass json POST data to Web API method as object

注意:请务必使用angular.toJson(),而不是JSON.stringify()

古德勒克!