Asp.net ядро, передающее массив объектов контроллеру
Привет,
Мне нужно передать массив объектов из Jquery в мой HomeController
Я перепробовал все, но безрезультатно, метод в контроллере вызывается, но предполагаемый переданный список пуст.
Что я уже пробовал:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.js"></script> <script>. . . . var canvasField = { id: cStep, recStartx: last_mousex, recStarty: last_mousey, recWidth: width, recHeight: height }; var canvasFields = new Array(); canvasFields.push(canvasField); var myJsonString = JSON.stringify(canvasFields); //only for test $('#btnClick').click(function (e) { $.ajax({ url: "@Url.Action("GetCanvasFields")", type: 'post', contentType: 'application/json', data: JSON.stringify(canvasFields), success: function () { alert("yes"); }, error: function (errMsg) { alert(errMsg); } }) }); </script>
сначала я проверил, правильно ли заполнен массив "canvasFields", поэтому я преобразовал его в строку Json и поместил в предупреждение, и результат был в порядке
к сожалению, даже думал, что метод "GetCanvasFields" будет вызван, но мой список остается пустым
мой домашний контролер:
[HttpPost] public ActionResult GetCanvasFields([FromBody] List<CanvasField> canvasFields) { return Json(new { resut = "OK" }); } public class CanvasField { public int Id { get; set; } public int RecStartx { get; set; } public int RecStarty { get; set; } public int RecWidth { get; set; } public int RecHeight { get; set; } }
Maciej Los
Вы заявили, что проверяли RecLists
вместо canvasField
- Вы можете это проверить?
F-ES Sitecore
Ваша функция принимает параметр под названием "canvasFields"
public ActionResult GetCanvasFields([FromBody] List<canvasfield> canvasFields)
но ваш js проходит мимо canvasField
данные: { canvasField: canvasField },
Эти два имени должны совпадать. Вполне могут быть и другие проблемы, google для передачи списков контроллерам, это очень хорошо документировано.
Nizar Belhiba
Извините @F-ES Sitecore я обновляю код
Я попробовал в своем клике Funktion с $('#btnClick').нажмите кнопку(функция (e) {
canvasFields = [{
id: 1,
recStartx: 2,
recStarty: 3,
ширина рек: 4,
recHeight: 5
},
{
id: 2,
recStartx: 2,
recStarty: 3,
ширина рек: 4,
recHeight: 5
}];
$.Аякс({
URL-адрес: "@URL-адрес.Действий("GetCanvasFields")",
тип: "почта",
contentType: 'application/json',
сведения: в формате JSON.преобразовать в строки(canvasFields),
успех: функция () {
тревога("да");
},
ошибка: функция (errMsg) {
уведомление(сообщение об ошибке);
}
})
});
и здесь это действительно сработало, но как только я сохраняю canvasFields.push(canvasField); я получаю результат null