Tengo una vista que permite a un usuario ingresar/editar datos para un nuevo widget. Me gustaría formar esos datos en un objeto JSON y enviarlos a mi controlador a través de AJAX para que pueda hacer la validación en el servidor sin una devolución de datos.Cómo pasar el tipo complejo usando json al controlador ASP.NET MVC
Lo tengo todo funcionando, excepto que no puedo descifrar cómo pasar los datos para que mi método de controlador pueda aceptar un tipo de widget complejo en lugar de parámetros individuales para cada propiedad.
lo tanto, si este es mi objeto:
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
Me gustaría que mi método de controlador para ser algo como esto:
public JsonResult Save(Widget widget)
{
...
}
Actualmente, mi jQuery se ve así:
var formData = $("#Form1").serializeArray();
$.post("/Widget/Save",
formData,
function(result){}, "json");
Mi formulario (Form1) tiene un campo de entrada para cada propiedad en el Widget (Id, Nombre, Precio). Esto funciona muy bien, pero finalmente pasa cada propiedad del Widget como un parámetro separado a mi método de controlador.
¿Hay alguna manera de poder "interceptar" los datos, tal vez usando un ActionFilterAttribute, y deserializarlos en un objeto Widget antes de que se llame a mi método de controlador?
Impresionante, me alegro de que lo hayas reparado. ¡Y gracias por publicar cómo lo arregló, eso ayudará mucho a otros en el futuro! –
Los campos públicos son el engendro del demonio en .NET. Rompen todo. ¡TODO LO QUE LE DIGO! – Will
Gracias. Esto me ayudó. –