Свойства объекта javascript, передаваемые в asp.net mvc Метод действия JsonResult всегда нулевой - PullRequest
0 голосов
/ 07 декабря 2018

Я пытался передать массив объектов методу действия JsonResult, созданному в классе Controller, я попробовал все возможные решения из другого ответа, но ни один из них не сработал.Вот моя функция js:

function CalculateCost() {
var distancecost = [];
//prepare the List<DistanceCost> object
for (i = 0; i < _SELECTED_POINTS.length; i++) {
    console.log('point::' + _SELECTED_POINTS[i]);
    let dist = {
        PlaceId: _SELECTED_POINTS[i].place_id,
        PointSequence: _SELECTED_POINTS[i].PointSequence,
        controlId: _SELECTED_POINTS[i].controlId,
        FromLatitude: (i == (_SELECTED_POINTS.length - 1)) ? _SELECTED_POINTS[0].geometry.location.lat() : _SELECTED_POINTS[i].geometry.location.lat(),
        FromLongitude: (i == (_SELECTED_POINTS.length - 1)) ? _SELECTED_POINTS[0].geometry.location.lng() : _SELECTED_POINTS[i].geometry.location.lng(),
        ToLatitude: _SELECTED_POINTS[i].geometry.location.lat(),
        ToLongitude: _SELECTED_POINTS[i].geometry.location.lng(),
        DistanceType: 'Mile',
        DistanceCalculateType: (i == (_SELECTED_POINTS.length - 1)) ? 'TotalDistance' : 'PickDrop',
        TotalPrice: '0',
        TotalDistance: '0'
    };

    console.log(dist);
    distancecost.push({
        dist
    });
}

$.ajax({
    method: 'GET',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    url: '/Dashboard/CalculateDistanceAndPrice',
    data: JSON.parse(JSON.stringify({ 'distanceCost': distancecost })),
    success: function (response) {
        console.log('DistanceCalculation Response:: ' + JSON.stringify(response));
    },
    error: function (response) {
        console.log(response);
    }
});

}

Вот метод действия Jsonresult:

enter image description here

Редактировать: как предложил Николас, я меняю тип, но он все еще не работает, AFAIK POST мы используем при вставке любых данных и PUT при обновлении любых данных, но здесь я просто извлекаю данные, вычисляя расстояние между каждой точкой:

$.ajax({
    method: 'POST',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    url: '/Dashboard/CalculateDistanceAndPrice',
    data: JSON.stringify({ 'distanceCost': distancecost }),
    success: function (response) {
        console.log('DistanceCalculation Response:: ' + JSON.stringify(response));
    },
    error: function (response) {
        console.log(response);
    }
});

enter image description here

Редактировать: Я изменил создание объекта, но все равно не повезло:

var DistanceCost = new Object();
    DistanceCost.PlaceId = _SELECTED_POINTS[i].place_id;
    DistanceCost.PointSequence = _SELECTED_POINTS[i].PointSequence;
    DistanceCost.controlId = "";//_SELECTED_POINTS[i].controlId,
    DistanceCost.FromLatitude = (i == (_SELECTED_POINTS.length - 1)) ? _SELECTED_POINTS[0].geometry.location.lat() : _SELECTED_POINTS[i].geometry.location.lat();
    DistanceCost.FromLongitude = (i == (_SELECTED_POINTS.length - 1)) ? _SELECTED_POINTS[0].geometry.location.lng() : _SELECTED_POINTS[i].geometry.location.lng();
    DistanceCost.ToLatitude = _SELECTED_POINTS[i].geometry.location.lat();
    DistanceCost.ToLongitude = _SELECTED_POINTS[i].geometry.location.lng();
    DistanceCost.DistanceType = 'Mile';
    DistanceCost.DistanceCalculateType = (i == (_SELECTED_POINTS.length - 1)) ? 'TotalDistance' : 'PickDrop';
    DistanceCost.TotalPrice = '0';
    DistanceCost.TotalDistance = '0';

1 Ответ

0 голосов
/ 07 декабря 2018

попытаться удалить цитаты distanceCost +> data: JSON.parse(JSON.stringify({ distanceCost: distancecost }))

...