#javascript #jquery #asp.net #json #ajax
Вопрос:
Я попытался передать массив объектов контроллеру jQuery Ajax
, но результат есть null
ASP.NET 5.0
.
Мой массив данных — это то, что нужно отправить controller: regions
. Конструктор данных определен в BoundingBoxModel
классе. Это моя ajax
функция:
$("body").on("click", "#onClick", function () {
var regions = [];
var arr = Array.prototype.slice.call(document.getElementsByClassName('ui-draggable'));
arr.forEach((tagele) => {
var region = {};
region.Height = tagele.offsetHeight;
region.Width = tagele.offsetWidth;
region.Top = tagele.offsetTop;
region.Left = tagele.offsetLeft;
regions.push(region);
});
$.ajax({
url: '/GenCode/Addregions',
type: "POST",
dataType: "json",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({'regions': regions}),
success: function () {
alert("pass")
},
error: function (jqXhr, json, errorThrown) {
alert(errorThrown);
console.log(errorThrown);
}
});
});
Итак, это моя модель BoundingBoxModel:
public class BoundingBoxModel
{
public int BoundingBoxId { get; set; }
public double Top { get; set; }
public double Left { get; set; }
public double Height { get; set; }
public double Width { get; set; }
}
Это мой метод действий. Это определено в GenCodeController
.
[HttpPost]
public IActionResult AddRegions(List<BoundingBoxModel> regions)
{
JsonResult result = new JsonResult(this.Json(JsonConvert.SerializeObject(regions), System.Web.Mvc.JsonRequestBehavior.AllowGet));
return resu<
}
Мой результат равен нулю:
Я не понимаю, почему это произошло. Вы не могли бы мне помочь?
Комментарии:
1. Вы отправляете объект, следует ли вместо этого отправлять массив?
Ответ №1:
Есть некоторые проблемы, которые я вижу —
- Я не уверен, что вы явно написали эту логику, но ваш объект региона всегда будет иметь последнее значение arr, потому что вы объявляете свою переменную внутри цикла.
- Если вы пытаетесь создать массив, то вам следует объявить переменную региона как — var region = []; .Прямо сейчас это объект.
- Вы пытаетесь передать объект и принимаете список в веб-сервисе. Либо удалите параметр list in в службе AddRegions, либо передайте массив из вызова ajax.
Ответ №2:
Я решил свою проблему, выделив contentType: "application/json;charset=utf-8",
строку в коде ajax. Используя эту строку, измените тип массива региона на строку, поэтому, когда я получаю данные в контроллере, возникла проблема.