#asp.net-core #asp.net-ajax #razor-pages
Вопрос:
Я использую Asp.net Основные страницы Razor и хочу отправить некоторые данные на сервер при нажатии кнопки, но я не могу получить значения клиента в вызывающем методе, он всегда равен нулю:
lt;button type="button" class="btn btn-primary" onclick="save1()"gt;Submitlt;/buttongt;
мой код js:
function save1() { var order = { SerialNo: '1'}; $.ajax({ type: "POST", url: "@Url.Page("Index","Save1")", headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() }, data: JSON.stringify(order), contentType: "application/json; charset=utf-8", dataType: "json", success: function () { alert('Success!'); }, failure: function (response) { alert('error!'); } }); }
обработчик моей страницы:
public async Tasklt;IActionResultgt; OnPostSave1Async(CreateOrderViewModel order) { //some code }
и моя модель представления:
public class CreateOrderViewModel { public string SerialNo { get; set; } ... }
Ответ №1:
Возможно, вам потребуется добавить [FromBody], чтобы получить отправленное значение, как это:
Модель:
public class Test { public string SerialNo { get; set; } }
Контроллер:
[HttpPost] public IActionResult Index([FromBody]Test order) { return View(); } public IActionResult Index() { return View(); }
Вид:
lt;button type="button" class="btn btn-primary" onclick="save1()"gt;Submitlt;/buttongt; lt;scriptgt; function save1() { var order = { SerialNo: '1' }; $.ajax({ type: "POST", url: "test/Index", data: JSON.stringify(order), contentType: "application/json; charset=utf-8", dataType: "json", success: function () { alert('Success!'); }, failure: function (response) { alert('error!'); } }); } lt;/scriptgt;
Результат:
Комментарии:
1. сработало как надо, спасибо