2010-11-11 27 views
7

estoy tratando de transferir una parte separada por comas de los números de la interfaz:JSON, ASP.NET MVC - excepción MaxJsonLength

[AcceptVerbs(HttpVerbs.Get)] 
public JsonResult GetSquares() 
{ 
var result = new JsonResult(); 
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
IList<double> list = new List<double>(); 
... 
result.Data = list; 
return result; 
} 

Esto funciona bien siempre y cuando sólo hay unos pocos números. Desafortunadamente, tengo que cambiar muchos números ocasionalmente y obtener una excepción MaxJsonLength. Intenté varias sugerencias para solucionar esto (agregue algo al archivo web.config, etc.). Tal vez no tengo que usar JSON después de todo? Sin embargo, todavía tengo que hacer algo con los números usando javascript. Estoy usando cosas de ajax de jquery en este momento.

Cualquier sugerencia bienvenida ...

Respuesta

1

Esto no funciona?

<configuration> 
    <system.web.extensions> 
     <scripting> 
      <webServices> 
       <jsonSerialization maxJsonLength="2147483644"/> 
      </webServices> 
     </scripting> 
    </system.web.extensions> 
</configuration> 

Si no es tal vez lo que puede pasar de nuevo como una cadena ...

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult GetSquares() 
{ 
    IList<double> list = new List<double>(); 
    .... 
    return Content(string.Join(",", list)); 
} 
+1

No, esto no funciona – cs0815

+0

try de paso hacia atrás de la cadena, JSON puede ser excesiva para lo que está haciendo. Si tuviera un objeto estructurado, yo diría que use json, pero si es solo una cadena delimitada por comas, entonces esto debería estar bien. – hunter

4

que han extendido el controlador de clase base y un gran trabajo:

clase ControllerExtensions:

namespace SCAWEB.Helpers 
{ 
    public static class ControllerExtensions 
    { 
     #region Json 
     public static int MaxJsonLength{get;set;} 

     static ControllerExtensions() 
     { 
      MaxJsonLength = 2147483644; 
     } 

     public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data) 
     { 
      return new System.Web.Mvc.JsonResult() 
      { 
       Data = data, 
       MaxJsonLength = MaxJsonLength, 
      }; 
     } 
     public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data, System.Web.Mvc.JsonRequestBehavior behavior) 
     { 
      return new System.Web.Mvc.JsonResult() 
      { 
       Data = data, 
       JsonRequestBehavior = behavior, 
       MaxJsonLength = MaxJsonLength 
      }; 
     } 
     //TODO: You can add more overloads, the controller class has 6 overloads 
     #endregion 
    } 
} 

clase myController:

using SCAWEB.Helpers; 

namespace SCAWEB.Controllers 
{ 
    public class VentasController : Controller 
    { 
     public ActionResult VentasList(){ 
      //Todo: All the action code 

      //return this.Json(myData); 
      return this.LargeJson(myData);//Here I use my extensions 
     } 
    } 
} 

Puede Especificar la longitud máxima en el código:

ControllerExtensions.MaxJsonLength = 1073741824;//1GB 
Cuestiones relacionadas