Передача списка от angular к c # через запрос http - PullRequest
0 голосов
/ 01 апреля 2019

Мой метод в c # получает список в качестве параметра, я пытаюсь вызвать этот метод в угловом формате, передавая ему массив, но проблема в том, что информация не достигает метода c #, список всегда пуст, хотя в угловом массиве была информация.

export class StationAllocationPostModel{

    idAppDeviceOwnerEntity: number;
    idAppDeviceOwnerEntityOriginal: number;
    idAppDeviceOwnerEntityRentalLocationId: number;
    Observations: string;
    selectedAppDevices: StationAllocationModel[];
}
createNewStationAllocation(selectedAppDevices: StationAllocationPostModel){

    return this.post("home/CreateAppDeviceRentalLocationAllocation", selectedAppDevices, {
      params: {
        'idAppDeviceOwnerEntity': selectedAppDevices.idAppDeviceOwnerEntity,
        'idAppDeviceOwnerEntityRentalLocationId': selectedAppDevices.idAppDeviceOwnerEntityRentalLocationId,
        'Observations': selectedAppDevices.Observations,
        'selectedAppDevices': selectedAppDevices.selectedAppDevices
      }
    });
  }

public post(url: string, data: any, options = null) {

        return new Promise<any>((resolve, reject) => {

            let response;
            this.http.post(
                this.baseUrl + url,
                {
                    data: data
                },
                {
                    headers: options ? options.headers : null,
                    observe: options ? options.observe : null,
                    params: options ? options.params : null,
                    reportProgress: options ? options.reportProgress : null,
                    responseType: options ? options.responseType : null,
                    withCredentials: options ? options.withCredentials : null
                }
            )
            .subscribe(
                data => {
                    response = data;
                    if (response && !response.success) {

                        if (response.response.ServerResponse[0].MessageType == "NOSESSIONEXCEPTION") {

                            localStorage.removeItem('userSession');
                            this.router.navigate(['/login'], { queryParams: { returnUrl: this.router.url } });
                        }
                    }
                },
                error => {
                    resolve(null);
                    this.handleError(url, options ? options.params : null );
                    console.log(error);
                }, () => {
                        if (response) {
                            resolve(response);
                    } else {
                        resolve(null);
                    }
                }
            );
        })
    }

Это мой метод c #:

public Object CreateAppDeviceRentalLocationAllocation(<other params>, List<AppDeviceRentalLocationAllocationHistoryExtended> selectedAppDevices)
        {
...
        }

Я ожидаю, что метод c # получит список с элементами, но он почему-то всегда выходит пустым. «Другие параметры» получают правильную информацию, поэтому я не знаю, что не так со списком.

Извините за длинный пост, я новичок здесь.

1 Ответ

1 голос
/ 01 апреля 2019

Не могли бы вы сформировать объект param в методе C #, который содержит следующее:

public class SelectedAppDevice
{
    public int idAppDevice { get; set; }
    public int idAppDeviceOwnerEntity { get; set; }
    public int idAppDeviceOwnerEntityRentalLocationId { get; set; }
    public string Observations { get; set; }
    public string DeviceId { get; set; }
    public string EntityRentalLocationName { get; set; }
    public DateTime CreationDate { get; set; }
    public DateTime EndDate { get; set; }
    public string CreatedByUserName { get; set; }
    public int RentalStatus { get; set; }
    public int idAppDeviceRental { get; set; }
    public bool IsRentalStart { get; set; }
    public bool IsRentalEnd { get; set; }
    public object idNextExpectedEntityRentalLocationName { get; set; }
    public object NextExpectedEntityRentalLocationName { get; set; }
    public string LastKnownEntityRentingId { get; set; }
    public string CallerId { get; set; }
    public int RentalStatusId { get; set; }
    public int DeviceStatusId { get; set; }
}

public class Data
{
    public string Observations { get; set; }
    public int idAppDeviceOwnerEntityRentalLocationId { get; set; }
    public int idAppDeviceOwnerEntity { get; set; }
    public List<SelectedAppDevice> selectedAppDevices { get; set; }
}

public class RootObject
{
    public Data data { get; set; }
}

и сделать его параметром метода контроллера:

public Object CreateAppDeviceRentalLocationAllocation(RootObject param)
        {
...
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...