wrapbootstrap webapplayers template smartadmin smart plantillas pago inspinia bootstrap asp.net-mvc json jquery-plugins

asp.net-mvc - template - webapplayers



ASP.NET MVC JsonResult y JQuery flot (3)

Verifique que su Json haya regresado al cliente, serán objetos Json con pares de valores clave, algo como:

{{''2003'':10882,''2002'':10383},....}

Donde como requiera una matriz de Matrices.

[[[2003, 10882],[2002, 10383]],...]

Siempre puede generar la cadena Json usted mismo y devolver el resultado

StringBuilder sb = new StringBuilder(); sb.append("[2003,10882],") return Json("[" + sb.ToString() + "]");

O podría intentar almacenar sus valores en Arrays que podrían generar el Json deseado, pero no lo he intentado.

Estoy tratando de usar el plugin de gráficos jquery flot con asp.net mvc. Intento extraer dinámicamente datos de un JsonResult para completar el gráfico.

Mi problema es que parece que no puedo obtener los datos devueltos de JsonResult en el formato correcto.

Aquí está mi código del lado del servidor:

public ActionResult JsonValues() { IList<IDictionary<string, int>> listofvalues = new List<IDictionary<string, int>>(); IDictionary<string, int> values1 = new Dictionary<string, int>(); values1.Add("2003", 10882); values1.Add("2002", 10383); values1.Add("2001", 10020); values1.Add("2000", 9762); values1.Add("1999", 9213); values1.Add("1998", 8720); IDictionary<string, int> values3 = new Dictionary<string, int>(); values3.Add("2003", 599); values3.Add("2002", 510); values3.Add("2001", 479); values3.Add("2000", 457); values3.Add("1999", 447); values3.Add("1998", 414); listofvalues.Add(values1); listofvalues.Add(values3); JsonResult result = new JsonResult { Data = listofvalues }; return result; }

Y aquí está mi código del lado del cliente:

$(function() { $.getJSON("/path/to/JsonValues", function(data) { var plotarea = $("#plot_area"); $.plot(plotarea, data); }); });

Tenga en cuenta que el siguiente código del lado del cliente funciona bien:

$(function() { var points = [ [[2003, 10882], [2002, 10383], [2001, 10020], [2000, 9762], [1999, 9213], [1998, 8720]], [[2003, 599], [2002, 510], [2001, 479], [2000, 457], [1999, 447], [1998, 414]] ]; var plotarea = $("#plot_area"); $.plot(plotarea, points); });

Dado que lo anterior funciona correctamente, parece que solo se trata de formatear el JsonResult devuelto correctamente. ¿Cómo puedo hacer esto? ¿Es la lista de diccionarios el mejor tipo para devolver, o debería estar usando algo más? ¿O hay una función en javascript que debería usar para formatear los datos correctamente?

Parece una cosa realmente simple, pero no puedo hacer que funcione.


Si quieres hacerlo con matrices C #, puedes hacer lo siguiente:

var values = new object[] { new object[] /* First series of value */ { new int[,] { {2003,10882} }, new int[,] { {2002,10383} } } };

Y entonces

return Json(values);


Necesita una matriz JSON en el formulario:

[[1, 1], [2, 3], [5, 5]]

El complemento de categoría flot espera datos en el formulario:

[["category1", 12], ["category2", 3]]

Esto no es sencillo de crear en C # (tuvo que buscar durante mucho tiempo :-))

La clave es crear Arrays de object [] ( object [] )

El código no probado sigue:

IEnumerable<object[]> values1_array = from x in values1 select new object [] {x.Key, x.Value}; IEnumerable<object[]> values3_array = from x in values3 select new object [] {x.Key, x.Value}; //create one big object var dataArray = new object[] { new {data = values1_array, label="Values1"}, new {data = values3_array, label="Values3"}, }; //return Json data return Json(dataArray) /* JsonRequestBehavior.AllowGet ?*/

Su código de JavaScript debería funcionar:

$(function() { $.getJSON("/path/to/JsonValues", function(data) { var plotarea = $("#plot_area"); $.plot(plotarea, data); }); });