передача массива из angular js в Web API = null

#angularjs #api

#angularjs #API

Вопрос:

Дорогие, я отправляю объект из angularjs в web API. все свойства отправляются в API и принимаются правильно, за исключением 2 массивов, они принимаются с помощью null в c # без указания причины, поэтому, если вы могли бы помочь, это было бы здорово, в массиве department (dep) я отправляю 1 значение $scope.dep в массиве cont я отправляю значения multipule, возможно, передача в массив выполняется некорректно, я не знаю HTML

 <div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
                                    <div class="form-group">
                                        <div class="col-xs-12">
                                            <label class="control-label" for="name">Contracts <span class="danger">*</span></label>
                                        </div>
                                        <div class="col-xs-12">
                                            <select id="example-post" class="form-control input-sm" multiple="multiple" ng-model="cont" ng-change="addcontracts(cont)">
                                                <option ng-repeat="c in selectedcontracts" value="{{c.Sys_Key}}">{{c.Cont}}</option>
                                            </select>
                                        </div>
                                    </div>
                                </div>

<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
                                    <div class="form-group">
                                        <div class="col-xs-12">
                                            <label class="control-label" for="name">Department <span class="danger">*</span></label>
                                        </div>
                                        <div class="col-xs-12">
                                            <select class="form-control input-sm" ng-model="dep" ng-options="d.Dep_key as d.dep for d in staffdepartments | unique:'dep'"></select>
                                        </div>
                                    </div>
                                </div>
  

Angular js

 this.Repttx_PayRollTotal_Net = function (url, Attendlog) {
                                        return  $http.post(urlBase   '/'   url, Attendlog)

                                    };
$scope.newcontracts = [];
    $scope.addcontracts = function (cont) {
        console.log(cont);
        $scope.newcontracts = [];
        $scope.newcontracts.push(cont) ;
        console.log($scope.newcontracts);
    }

var Attendlog = { DFrom: $scope.from1, Fg: $scope.fg, StaffKey: $scope.staffkey, StatusServ: $scope.jbsts, Cont: JSON.stringify($scope.newcontracts), Order: $scope.sor }

            AtendanceReprtingSrv.Repttx_PayRollTotal_Net("AttendanceReprting/Repttx_PayRollTotal_Net",  Attendlog).then(function (response) {
                $scope.ttx = (response.data);

                document.getElementById("frmrepodbc").src = $scope.ttx;
                $("#dialog_PrintRptObc").modal("show");
            })
  

Класс C # и его свойства

  public class Attendlogs
{
    public DateTime DFrom { get; set; }
    public short Fg { get; set; }
    public long StaffKey { get; set; }
    public int StatusServ { get; set; }
    public int[] Dep { get; set; }
    public int[] Cont { get; set; }
    public int Order { get; set; }
}
  

C#

  [HttpPost]
    public string Repttx_PayRollTotal_Net([FromBody] Attendlogs logs)
    {
        DataTable DTres = new DataTable();
        DTres = null;

        HR_ReportingTimeAttendDL.ReportiingDL hr = new HR_ReportingTimeAttendDL.ReportiingDL();
        DTres = hr.AttendLog(logs.DFrom, logs.Fg, logs.StaffKey, logs.StatusServ, logs.Dep, logs.Cont, logs.Order);
  

Заранее спасибо

Ответ №1:

вы отправляете массивы в свой api в виде объектов

Продолжение: JSON.stringify($scope.newcontracts)

возможно, вам потребуется выполнить цикл обработки ваших данных и поместить идентификаторы в массивы, а затем отправить этот массив на серверную часть

потому что в классе model on Attendlogs на серверной стороне вы ожидаете массив целых чисел.

Комментарии:

1. вы уже делаете это, просто удалите JSON.stringify , просто убедитесь, что отправили массив целых чисел, точно такой, какой вы ожидаете на стороне BE