Tecnocrata

Pasando objetos JSON a los Action Methods en MVC3

Hace un tiempo atras escribi un post relacionado a como evitar los postbacks haciendo uso de ajax y obviamente jquery (Articulo referenciado). De ese momento hace practicamente un anio y hoy con algo mas de experiencia vuelvo a analizar un tema similar.

Como pasar un objeto JSON a un Action Method?

Escenario del problema

En el controlador existe el siguiente metodo (Action Method):

image

 

 

 

 

La clase Person, ridiculamente simple, es como sigue:

image

Las partes mas importantes del codigo html son los 3 botones locos para las pruebas y los manejadores del evento click para cada boton:

image

La idea principal es que cuando se presione uno de los botones HTML, automaticamente se pasa desde javascript hacia el Action Method los objetos que esta esperando dicho metodo y uno de esos parametros es la clase Person que, vendra desde un objeto JSON

Soluciones posibles

Pareceria una tarea trivial, pero en MVC2 experimente dos soluciones:

  1. 1. El JsonBinder que propuse en el articulo mencionado.
  2. 2. Eduar Tomas critico correctamente el uso de un model binder y propuso usar un Value Provider, solucion perfecta para mis necesidades

El codigo para usar el model Binder o el Value Provider es:

image

image

Solucion definitiva

Por la necesidad de migrar mi aplicacion hacia MVC3 me vi en la obligacion de volver a analizar esta solucion y vi que MVC3 ya traer un value provider por lo que la solucion es bastante simple y es la siguiente:

image

image

Lo mas importante a destacar de la solucion es la utilizacion del atributo contentType y de que todos los parametros se colocan en un unico objeto JSON y luego son sometidos al JSON.stringify.

Espero que les resulte util, tambien les dejo adjunta la solucion que utilice para que puedan hacer sus propias comprobaciones.

Abrazos

Posted: 10/11/2011 0:07 por Enrique Ortuño | con no comments
Archivado en: ,,
Comparte este post: