viernes, 7 de enero de 2011

Enviar objeto JSON a un controlador genérico(.ashx) de ASP.NET con JQuery

Se tiene el objeto javascript:


function Libro(isbn,titulo,autor)
{
this.ISBN = isbn;
this.Titulo = titulo;
this.Autor = autor;
}

Mediante la librería JSON.js y su función stringify serializamos el objeto de javascript(JSON) y lo mandamos al controlador:


var libro = new Libro("9755420406824", "El Sueño del Celta","Mario Vargas Llosa");
//Serializamos el objeto JSON:
var jsonLibro = JSON.stringify(libro);

//Ahora mandamos el objeto serializado al controlador genérico:
$.post("../Controladores/MiControlador.ashx", { Data: jsonLibro },
function (response) {
if (response.length > 0) {
alert(response);
}
});

En el controlador, mediante la clase JavaScriptSerializer(contenida en System.Web.Script.Serialization), deserializamos el objeto JSON y obtenemos una instancia de la Clase libro; finalmente devolvemos al cliente un mensaje:


...
public void ProcessRequest (HttpContext context) {
string mensaje = "";
string jsonLibro = context.Request.Form["Data"];
//deserializo:
JavaScriptSerializer js = new JavaScriptSerializer();
Libro libro = js.Deserialize<Libro>(jsonLibro );
mensaje = "Recibido el libro: " + libro.Titulo;
context.Response.ContentType = "text/plain";
context.Response.Write(mensaje);
}
...

//La clase Libro:
public class Libro
{
public string ISBN {get;set;}
public string Titulo {get;set;}
public string Autor {get;set;}
}

3 comentarios: