2010-11-11 17 views
7

jestem po prostu staramy się przesunąć część oddzielonych przecinkami numery do frontend:JSON, ASP.NET MVC - MaxJsonLength wyjątek

[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; 
} 

Działa to dobrze, tak długo, jak to tylko kilka liczb. Niestety, muszę czasami zmieniać wiele liczb i uzyskać wyjątek MaxJsonLength. Wypróbowałem kilka sugestii, aby to rozwiązać (dodaj coś do pliku web.config itd.). Może nie muszę używać JSON po wszystkim? Jednak nadal "muszę coś" zrobić z liczbami przy użyciu javascript. Używam w tej chwili rzeczy ajaxowych jquery.

Wszelkie sugestie mile widziane ...

Odpowiedz

1

To nie zadziała?

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

Jeśli nie może można po prostu przekazać go jako ciąg ...

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

No to nie działa – cs0815

+0

spróbować tylko przejazdem z powrotem ciąg, json może być przesadą, co robisz. Gdybyś miał obiekt strukturalny, powiedziałbym, użyj json, ale jeśli jest to po prostu ciąg rozdzielany przecinkami, to powinno być dobrze. – hunter

4

mam rozszerzony kontroler klasy bazowej i działają świetnie:

ControllerExtensions klasa:

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 
    } 
} 

MyController klasa:

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 
     } 
    } 
} 

Można EZa maksymalna długość w kodzie:

ControllerExtensions.MaxJsonLength = 1073741824;//1GB 
Powiązane problemy