Сообщение Ajax со страницами Razor

#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. сработало как надо, спасибо