Esta es la respuesta más válida que encomtrarás compartir, pero obsérvala detenidamente y analiza si se adapta a tu proyecto.
Solución:
Presumiblemente, la acción que acepta la entrada solo se usa para este propósito en particular, por lo que podría usar el FormCollection
objeto y luego todas sus propiedades json de su objeto se agregarán al string colección.
[HttpPost]
public JsonResult JsonAction(FormCollection collection)
string id = collection["id"];
return this.Json(null);
Puede enviar JSON y analizarlo como dinámico si usa un contenedor como este:
JS:
var data = // Build an object, or null, or whatever you're sending back to the server here
var wrapper = d: data ; // Wrap the object to work around MVC ModelBinder
C#, modelo de entrada:
///
/// The JsonDynamicValueProvider supports dynamic for all properties but not the
/// root InputModel.
///
/// Work around this with a dummy wrapper we can reuse across methods.
///
public class JsonDynamicWrapper
///
/// Dynamic json obj will be in d.
///
/// Send to server like:
///
/// d: data
///
public dynamic d get; set;
C#, acción del controlador:
public JsonResult Edit(JsonDynamicWrapper json)
dynamic data = json.d; // Get the actual data out of the object
// Do something with it
return Json(null);
Es molesto agregar el envoltorio en el lado JS, pero simple y limpio si puede pasarlo.
Actualizar
También debe cambiar a Json.Net como el analizador JSON predeterminado para que esto funcione; en MVC4, por alguna razón, han reemplazado casi todo con Json.Net, excepto la serialización y deserialización del controlador.
No es muy difícil: siga este artículo: http://www.dalsoft.co.uk/blog/index.php/2012/01/10/asp-net-mvc-3-improved-jsonvalueproviderfactory-using-json-net /
Otra solución es usar un tipo dinámico en su modelo. Escribí una publicación de blog sobre cómo enlazar tipos dinámicos usando ValueProviderFactory http://www.dalsoft.co.uk/blog/index.php/2012/01/10/asp-net-mvc-3-improved -jsonvalueproviderfactory-usando-json-net/
Te mostramos comentarios y calificaciones
Tienes la opción de añadir valor a nuestro contenido añadiendo tu experiencia en las observaciones.