I am just trying to shift some comma separated numbers to the frontend:
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetSquares()
{
var result = new JsonR
I have extended the base class Controller and work great:
ControllerExtensions class:
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 class:
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
}
}
}
You can especify the max length in your code:
ControllerExtensions.MaxJsonLength = 1073741824;//1GB
Here is another custom JsonResult (CorrectJsonResult) which handles larger serialization limits that the default 4MB allowed by JavascriptConverter
.
And another example which uses ContentResult instead of JsonResult
subclass.
public ActionResult GetLargeJsonResult()
{
return new ContentResult
{
Content = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(myBigdata),
ContentType = "application/json"
};
}
This won't work?
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
If not maybe you can just pass it back as a string...
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetSquares()
{
IList<double> list = new List<double>();
....
return Content(string.Join(",", list));
}
See explaination and LargeJsonResult class at http://brianreiter.org/2011/01/03/custom-jsonresult-class-for-asp-net-mvc-to-avoid-maxjsonlength-exceeded-exception/