C#如何传递数组的对象角从前端到 C# 后端

发布时间: 2017/2/23 20:04:19
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我已经在角生成的对象的数组,我想它将其发送到 C# 控制器。怎么可以这样?

这是代码生成的对象的数组。

var addObjectToArray = function (id, price, quantity, tax) {
  $scope.element = {
    prodId: id,
    patientId: $state.params.patientId,
    clinicId: $cookies.get("clinicId"),
    user: authService.authentication.userName,
    price: price,
    quantity: quantity,
    tax: tax,
    subtotal: price * quantity,
    total: price * quantity + tax
  };
  $scope.productsArray.push({ product: $scope.element });
}

这是 C# 控制器。如何将对象数组传递作为 C# 控制器中的第二个参数?

[HttpPost]
[Route("... the route ...")]
[ResponseType(typeof(int))]
public IHttpActionResult InsertNewProductTotal(int clinicId) // << HOW CAN I GET THE ARRAY OF OBJECTS HERE ??? >>
{
    var newAttorney = _productSaleLogic.InsertNewProductTotal(clinicId, productsList);
    return Created(Request.RequestUri.ToString(), newAttorney);
}

谢谢你的帮助 !

解决方法 1:

假设你 Route 包含 clinicId,与此类似的方式︰

[Route("{clinicId:int}")]

然后,您需要将参数添加到您的控制器操作使用正确的类型︰

public IHttpActionResult InsertNewProductTotal(int clinicId, [HttpPost] Product[] productsList)
{
    var newAttorney = _productSaleLogic.InsertNewProductTotal(clinicId, productsList);
    return Created(Request.RequestUri.ToString(), newAttorney);
}

其中 Product 是代表你的 javascript 对象的类︰

public class Product {
    public int prodId {get; set;}
    public int patientId {get; set;}
    //etc.
}

在角控制器中,您必须使用 $http 服务发送到您的 api 端点的对象的数组︰

$http.post("http://myapihost/myapiPath/" + clinicId, $scope.productsArray)
    .then(function (response) {
        //ok! do something
    }, function (error) {
        //handle error
    });

当然,如果你不把 clinicId 里面的参数你 Route 属性,然后你应该使用的以下 URI 你 $http.post : "http://myapihost/myapiPath?clinicId=" + clinicId

官方微信
官方QQ群
31647020