通过HTTP请求将列表从angular传递到c#

时间:2019-04-01 08:52:31

标签: javascript c# angular asp.net-core

我在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 个答案:

答案 0 :(得分:1)

能否在包含以下内容的C#方法上形成一个param对象:

std::allocator

并将其作为控制器方法参数:

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; }
}