2010-11-11 12 views
7

ich gerade versuche, einige zu verschieben Komma Zahlen zum Frontend getrennt:JSON, ASP.NET MVC - MaxJsonLength Ausnahme

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

Das funktioniert gut, solange es nur ein paar Zahlen. Leider muss ich gelegentlich viele Zahlen verschieben und eine MaxJsonLength-Ausnahme erhalten. Ich habe mehrere Vorschläge ausprobiert, um dies zu beheben (fügen Sie etwas zur Datei web.config etc. hinzu). Vielleicht muss ich JSON doch nicht benutzen? Allerdings muss ich immer noch etwas mit den Zahlen mit Javascript machen. Ich benutze im Moment jquery's Ajax-Sachen.

Anregungen willkommen ...

Antwort

1

Dies funktioniert nicht?

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

Wenn nicht vielleicht können Sie es einfach als String übergeben zurück ...

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

Nein, das nicht – cs0815

+0

funktioniert versuchen, die Zeichenfolge nur vorbei zurück, json sein könnte übertrieben für das, was Sie tun. Wenn Sie ein strukturiertes Objekt hätten, würde ich json verwenden, aber wenn es nur eine durch Kommas getrennte Zeichenfolge ist, sollte das in Ordnung sein. – hunter

4

Ich habe die Basisklasse-Controller erweitert und große Arbeit:

ControllerExtensions Klasse:

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 Klasse:

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

Sie können die maximale Länge im Code angeben:

ControllerExtensions.MaxJsonLength = 1073741824;//1GB 
Verwandte Themen