Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

129
Vistas
Solicitud de publicación de Ajax MVC

Tengo esta función JQuery:

 function EditContactPost() { var urlEditPost = $("#hdnInfo").data("url_add_contact"); var test = $("#formEditContact").serialize(); alert(test); $.ajax({ type: 'post', url: urlEditPost, data:{ marketingContactVM: test }, }) }

Estoy haciendo una alerta como ven y estoy viendo que la variable test tiene la forma serializada correctamente con todos los valores. Pero cuando la acción del controlador recibe esta solicitud en el lado del servidor, marketingContactVM siempre es nulo. ¿Por qué está pasando esto? La acción de mi controlador se ve así:

 [HttpPost] public ActionResult AddContact(MarketingVM marketingContactVM) //always null { some code... }

En caso de que esta sea mi clase modelo, contiene otra lista dentro:

 public class MarketingVM { public IEnumerable<string> States { get; set; } public List<MarketingVM> MarketingList { get; set; } public string Firstname { get; set; } public string Lastname { get; set; } public string Company { get; set; } public string Address { get; set; } public string City { get; set; } public string State { get; set; } public string Zip { get; set; } public string Country { get; set; } public string Phone { get; set; } public string Fax { get; set; } public string Mail{ get; set; } public string URL { get; set; } public bool IsTrue{ get; set; } public int OtherId{ get; set; } }

Revisé la pestaña Red en DevTools y esta es la Request URL:http://localhost:56602/ControllerName/AddContact , eso debería estar bien. Pero los datos se envían como FormData , así:

 marketingContactVM:Company=Microsoft+Company&Email=user10%40email.co&First= Auto&Last=Mapper&Phone=98797988997&Fax=&URL=ww.auto.org&Adress=automapper+ street&City=auto+city&State=FL&Zip=33654&Country=USA&MarketingContacts%5B0%5D .Name=1%2F03%2F2012+1%3A15+PM&MarketingContacts%5B0%5D.IsSelected=false

.. y así. Tal vez la forma en que se envían los datos... Creo que el formato correcto debería ser:

marketingContactVM: Company=Microsoft Company Email=user10@email.co First=Charles Last=Johnston Phone=98797988997 Fax=989898 URL=ww.auto.org Adress=North streetCity=Sacramento State=FL Zip=33654 Country=USA MarketingContacts.Name=Piotr MarketingContacts.IsSelected=false

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

ya que está serializing el formulario, no necesita agregarlo en el objeto json

 data:{ marketingContactVM: test },

en su lugar, simplemente pase el objeto serializado como este

 $.ajax({ type: 'post', url: urlEditPost, data:test, })
about 4 years ago · Santiago Trujillo Denunciar

0

Prueba esto:

 $.ajax({ url: urlEditPost, method: "POST", data: { marketingContactVM: test }, dataType: "json" });
about 4 years ago · Santiago Trujillo Denunciar

0

Agregue la propiedad contentType . De esta forma, AP.NET MVC sabrá deserializar el cuerpo de la solicitud como JSON.

 function EditContactPost() { var urlEditPost = $("#hdnInfo").data("url_add_contact"); var test = $("#formEditContact").serialize(); alert(test); $.ajax({ type: 'post', url: urlEditPost, data:{ marketingContactVM: test }, contentType: 'application/json' }) }

PD: También deberías usar data: JSON.stringify(test) .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda