Я делаю это со страницы HTML (razor), используя AJAX jQuery.
Форма сериализует данные и может читать элементы. Однако, поскольку эти данные отправляются в метод, аргумент, передаваемый в метод, имеет значение null.
Я просмотрел здесь несколько сообщений на stackoverflow и в Интернете.
Изначально у меня была функция контроллера, возвращающая результат IActionResult и Action. Возвращаем View(); однако аргумент по-прежнему был нулевым.
Я пытался сделать так, чтобы аргументом был сам объект, который (книга) таков и есть модель. Но безрезультатно.
Я явно что-то упускаю.
Заранее спасибо.
.cshtml / jQuery:
@model Library.Models.Book
@{
ViewData["Title"] = "BookAddView";
}
BookAddView
Book
@Html.DisplayNameFor(model => model.AvailabilityStatus)
Submit
Back to List
$('#btn_SubmitBook').click(
function () {
var data = $("#frm_newBook").serialize();
$.ajax({
url: '@Url.Action("BookAdd", "Library")',
type: 'POST',
dataType: 'json',
content: "application/json; charset=utf-8",
data: data
});
}
);
Контроллер C#:
// POST : Book/Create and AddBook
[HttpPost]
public JsonResult BookAdd(string jsonInput)
{
if (String.IsNullOrEmpty(jsonInput))
{
return Json(0);
};
Book book = JsonConvert.DeserializeObject(jsonInput);
_bookRepository.AddBook(book);
return Json(1);
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... controller