2011-04-02 7 views
7

Estoy tratando de pasar una matriz desde una función jQuery a mi controlador. La matriz contiene contenido y la identificación del div que contiene ese contenido.Pasando Matriz desde jQuery a controlador MVC.NET dando resultado nulo en el controlador pero valores presentes en la función jQuery

Cuando reviso los objetos que se envían a través de la publicación AJAX en Firebug, los valores correctos están allí pero después de colocar un punto de interrupción en mi controlador el valor recibido es una Lista o Matriz vacía o el tipo que intento establecerlo . Soy bastante nuevo en el uso de JSON para pasar datos a mis controladores, por lo que agradecería algo de ayuda sobre dónde me estoy equivocando.

jQuery función llamada en "enviar" haga clic en. La matriz está declarada globalmente en mi script y se agrega cada vez que una nueva área se llena con contenido.

function postContent() { 
     $.ajax({ 
      type: "POST", 
      datatype: 'json', 
      url: "/Admin/getContentArray", 
      data: JSON.stringify(contentArray), 
      contentType: 'application/json; charset=utf-8', 
      success: function (result) { 
       alert(result.Result); 
      } 
     }); 
    } 

Prueba recibir controlador

[HttpPost] 
    public JsonResult getContentArray(List<Content> myPassedArray) 
    { 
     var data = myPassedArray; 
     return this.Json(null); 
    } 

Respuesta

1

Usted puede echar un vistazo a la following blog post. Esperemos que aclare las cosas. Básicamente hay dos casos: ASP.NET MVC 3 donde puede enviar solicitudes JSON a la acción del controlador de fábrica y versiones anteriores de ASP.NET MVC donde necesita usar un JsonValueProviderFactory personalizado.

+0

Eso es extraño, porque yo estoy usando MVC 3, ¿qué tipo de datos debería configurar para recibir estos datos en el controlador? Como se estableció anteriormente, configurarlo en una lista de tipo "Contenido" devuelve una lista con el número correcto de entradas, pero simplemente no hay datos. –

+0

Me puso en el camino correcto. Configuré mi modelo de contenido para que refleje exactamente las claves enviadas en el objeto JSON y ahí lo tienes, ¡¡¡resultados !!! Gracias Darin –

5

Esto funcionó estableciendo la propiedad tradicional en verdadero antes de realizar la llamada get. es decir .:

jQuery.ajaxSettings.traditional = true 

$.get('/controller/MyAction', { vals: arrayOfValues }, function (data) {... 

he encontrado la solución aquí: Pass array to mvc Action via AJAX

Cuestiones relacionadas