передача массива из углового js в Web API = ноль - PullRequest
0 голосов
/ 28 марта 2019

Уважаемые, я отправляю объект из angularjs в веб-API. все свойства отправляются в API и принимаются правильно, кроме 2-х массивов, они принимаются нулем в c #, не зная причину, поэтому, если вы могли бы помочь, это будет здорово в массиве отдела (dep) я посылаю 1 значение $ scope.dep в массиве cont я отправляю несколько значений, может быть, неправильно помещать в массив, я не знаю 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>

Угловой 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 Ответ

0 голосов
/ 28 марта 2019

вы отправляете массивы в виде объектов на ваш API

Cont: JSON.stringify ($ scope.newcontracts)

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

, поскольку в модели класса Attendlogs на стороне Backend вы ожидаете целочисленный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...