Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

246
Views
Ajax Post (Modelo vinculado) pasando nulo al controlador

Estoy haciendo una solicitud AJAX POST al controlador (ASP.NET Core MVC), pero el valor del parámetro aparece como nulo. Probé varias soluciones dadas en StackOverflow. Pero, no pude corregirlo. Por favor ayuda.

Mi vista recopila información sobre las tarifas de las clases. Puede haber más de un pago.

 $(function () { $('#sendSlip').click(function (e) { e.preventDefault(); let fees = new Array(); //To store payment info let tb = $('#feesTable:eq(0) tbody'); //Collecting info of each payment tb.find("tr").each(function () { let row = $(this); let fee = {}; if (row.find('input:checkbox:first').is(':checked')) { fee.ClassId = row.find("TD").eq(0).html(); fee.FeeId = row.find("TD").eq(1).html(); fee.Amount = row.find(".fee").html(); fee.Month = row.find(".month").html(); fees.push(fee); } }); //Arranging data to send to controller var data = { fees: fees, Bank: $(".bank").val(), PaidAmount : $(".amount").val(), PaidDate : $(".date").val() }; console.log(data); $.ajax({ type: 'POST', url: '@Url.Action("StudentPayment_Create", "StudentPayment")', contentType: "application/json", headers: { 'RequestVerificationToken': gettoken() }, data: //{ data: JSON.stringify(data) }, JSON.stringify(data) , }) }); });

Modelo

 public class StudentPaymentSlipVM { public StudentPaymentPaidClassVM fees { get; set; } public string Bank { get; set; } public DateTime PaidDate { get; set; } public int PaidAmount { get; set; } }

Controlador

 public ActionResult StudentPayment_Create([FromBody] List<StudentPaymentSlipVM> data) { --- }

Detalles del objeto en tiempo de ejecución ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

De su captura de pantalla adjunta para que los datos se transfieran al controlador, la estructura de los datos no coincidía con el modelo de datos que esperaba el controlador.

Suponga que la estructura de datos para el front-end es correcta .

El controlador debe esperar que los datos recibidos sean un objeto StudentPaymentSlipVM . Mientras que en el objeto StudentPaymentSlipVM , las fees son una matriz StudentPaymentPaidClassVM .

Modelo

 public class StudentPaymentSlipVM { public List<StudentPaymentPaidClassVM> fees { get; set; } public string Bank { get; set; } public DateTime PaidDate { get; set; } public int PaidAmount { get; set; } }

Controlador

 public ActionResult StudentPayment_Create([FromBody] StudentPaymentSlipVM data) { }

Desde su parte de JQuery, asegúrese de que su objeto de datos que se pasará a la API debe coincidir con el tipo de datos como su modelo en el back-end.

 var data = { fees: fees, Bank: $(".bank").val(), PaidAmount : parseInt($(".amount").val()), PaidDate : $(".date").val() };
about 4 years ago · Juan Pablo Isaza Report

0

Traté de pasar mis datos al controlador al vincularme a un ViewModel (StudentPaymentSlipVM) que tiene todas las definiciones requeridas. Pero no pude hacerlo. Así que cambié la forma y pasé mi objeto al Controlador de la siguiente manera, ahora está funcionando. Y también me gustaría agradecer a Yong Shun.

  1. Cambió el código JQuery
 $.ajax({ type: 'POST', url: '@Url.Action("action", "controller")', headers: { 'RequestVerificationToken': gettoken() }, data: dataObj, })
  1. Cambié el controlador
 [HttpPost] public ActionResult StudentPayment_Create(List<StudentPaymentPaidClassVM> Fees, string Bank, decimal PaidAmount, DateTime PaidDate) { ..... }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!