【问题标题】:WebApi2 how to pass Json with an arrayWebApi2如何通过数组传递Json
【发布时间】:2017-04-03 07:43:00
【问题描述】:

我有以下带有数组的 Json,我从 AngularJS 发送它

{id_fleet: 4177, id_fleetfeature: Array[2]}

var dataFeatures = {
    id_fleet: $scope.id,
    id_fleetfeature: $scope.selectedFeatures
}
$http.put(myUrl + "Fleets/Insert", JSON.stringify(dataFeatures)).then(function () {
    Materialize.toast('Features insertadas correctamente', 3000);
    $scope.refreshData();
});

Web API 模型

public class modelFleetFeatures {
    public int id_fleet { get; set; }
    public int[] id_fleetfeature { get; set; }
}

Web API 函数

[HttpPut]
[Route("api/Fleets/FleetFeature/Update")]
public HttpResponseMessage updateFleetFeature(List<modelFleetFeatures> data)
{
    var cnt = 0;

    foreach (var item in data)
    {
        db.sp_Fleet_FleetFeaturesDelete(item.id_fleet);
        db.SaveChanges();
    }

    foreach (var item in data)
    {
        db.sp_Fleet_FleetFeaturesInsert(item.id_fleet, item.id_fleetfeature[cnt]);
        db.SaveChanges();
        cnt +=1;
    }

    return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
}

Web API 中,数据的值总是为空

【问题讨论】:

  • 不要将对象列表作为参数传递,而是创建另一个包含 modelFleetFeatures 列表作为属性的类。这样您只接受一个有效对象作为参数

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


【解决方案1】:

您在 JSON 中发送单个对象,那么为什么要在 API 操作中期望对象列表? 只期望 api Action 中的单个对象,您将在调用中获得该对象模型:

public HttpResponseMessage updateFleetFeature(modelFleetFeatures data)
{
    //do stuff
}

并且不需要在 put 请求中对 json 对象进行字符串化。

$http.put(myUrl + "Fleets/Insert", dataFeatures).then(function () {
    Materialize.toast('Features insertadas correctamente', 3000);
    $scope.refreshData();
});

【讨论】:

    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2019-03-26
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多