Mvc Jquery Ajax Post devuelve nulo

He estado tratando de publicar dos parámetros … Este es el código ajax

function Kaydet() { var params = {}; var Kiralayan = $("#RentForm").serialize(); params.kisi = Kiralayan ; params.aracid = P.AracID; console.log(params); $.ajax({ type: "POST", url: '@Url.Action("Save","AracKirala")', data: params, dataType: "text", success: function (response) { if (response != "OK") { alert("Kayıt yapılamadı."); } else { document.getElementById("RentForm").reset(); alert("Kayıt başarıyla gerçekleştirildi."); $("#myModal").modal('hide'); Ara(); } } }); 

Método

 public ActionResult Save(Kiralayan kisi = null, int aracid = 0) { 

el problema es que ajax publica “aracid” corretamente pero “kisi” se vuelve nulo cuando se desencadena el método … Traté de no publicar “aracid” con “kisi”, así que ajax publicó bien para un parámetro “kisi”, pero no funciona en conjunto …

Si serializa el formulario, puede agregarle valores adicionales con la función .param()

 var data = $("#RentForm").serialize() + '&' + $.param({ 'aracid': AracID }, true); $.ajax({ type: "POST", url: '@Url.Action("Save","AracKirala")', data: data, .... 

MVC correlacionará el objeto por usted, por lo que también podría omitir el anidamiento de extracción del formulario dentro del objeto.

Notas:

  • Si aracid también es una propiedad en el modelo, se correlacionará con la propiedad y el parámetro adicional.
  • Utilizar push en la colección serialise() es más fácil de mantener que la alternativa de concatenar cadenas antes de la llamada serialize() .

p.ej

  var Kiralayan = $("#RentForm").serialize(); // Add the extra non-form parameter Kiralayan.push({name: 'aracid', value: P.AracID}); 

Ejemplo completo:

  function Kaydet() { var Kiralayan = $("#RentForm").serialize(); // Add the extra non-form parameter Kiralayan.push({name: 'aracid', value: P.AracID}); console.log(params); $.ajax({ type: "POST", url: '@Url.Action("Save","AracKirala")', data: Kiralayan, dataType: "text", success: function (response) { if (response != "OK") { alert("Kayıt yapılamadı."); } else { document.getElementById("RentForm").reset(); alert("Kayıt başarıyla gerçekleştirildi."); $("#myModal").modal('hide'); Ara(); } } });