2014-11-28 1 views
0

많은 데이터를 반환하는 컨트롤러가 있습니다. JSON JavaScriptSerializer를 사용하여 직렬화 또는 비 직렬화 중에 오류가 발생했습니다. 문자열의 길이가 maxJsonLength 속성에 설정된 값을 초과합니다. "MVC의 LargeJsonResult는 많은 값을 반환합니다.

나는 이것을 사용하여 나의 web.config를 추가했다. 그러나 오류는 여전히 발생합니다.

<system.web.extensions> 
    <scripting> 
     <webServices> 
     <jsonSerialization maxJsonLength="2147483645" recursionLimit="100"> 
     </jsonSerialization> 
     </webServices> 
    </scripting> 
    </system.web.extensions> 

그때는 컨트롤러

return new LargeJsonResult() { Data = output, MaxJsonLength = int.MaxValue }; 

에서 다음과 같이 말했다이 웹 사이트 http://brianreiter.org/2011/01/03/custom-jsonresult-class-for-asp-net-mvc-to-avoid-maxjsonlength-exceeded-exception/

에 같은 새로운 클래스 LargeJsonResult를 추가하지만 난 많은 반환 데이터를 어떻게 것을 사용할 수 있습니까? 아래의 페이로드를 줄일 4 별도의 아약스 호출, 당신이 필요로하는 4 개 속성 중 하나를 반환하는 다른 방법에 대한 각을 고려하기 위해 내 컨트롤러

public ActionResult LoadInitData() 
     { 
      try 
      { 
       Database db = new Database("CON001"); 
       _employee = Helper.Common.GetEmployeeData(db); 

       EmployeeDAC dacEmployee = new EmployeeDAC(db); 
       Employee dataEmployee = dacEmployee.GetDataByComputerLogin(GetUser()); 

       if (_employee.SBU == "FB") 
       { 
        BrandBudgetDAC dacBrandBudget = new BrandBudgetDAC(db); 
        List<BrandBudget> dataBrandBudget = dacBrandBudget.GetDataBrandFB(); 

        PostBudgetDAC dacPostBudget = new PostBudgetDAC(db); 
        List<PostBudget> dataPostBudget = dacPostBudget.GetDataPostFB(); 

        AreaDAC dacArea = new AreaDAC(db); 
        List<Area> dataArea = dacArea.GetData(); 

        return Json(new { Employee = dataEmployee, BrandBudget = dataBrandBudget, PostBudget = dataPostBudget, Area = dataArea }, JsonRequestBehavior.AllowGet); 
       } 
       else 
       { 
        BrandBudgetDAC dacBrandBudget = new BrandBudgetDAC(db); 
        List<BrandBudget> dataBrandBudget = dacBrandBudget.GetData(_employee.SBU); 

        PostBudgetDAC dacPostBudget = new PostBudgetDAC(db); 
        List<PostBudget> dataPostBudget = dacPostBudget.GetData(_employee.SBU); 

        AreaDAC dacArea = new AreaDAC(db); 
        List<Area> dataArea = dacArea.GetData(); 

        return Json(new { Employee = dataEmployee, BrandBudget = dataBrandBudget, PostBudget = dataPostBudget, Area = dataArea }, JsonRequestBehavior.AllowGet); 
       } 


      } 
      catch (Exception ex) 
      { 
       return Json(new { Error = ex.Message }, JsonRequestBehavior.AllowGet); 
      } 
     } 

답변

1

입니다.

public ActionResult LoadInitEmployeeData() 
{ 
    Employee dataEmployee = .... 
    .... 
    return Json(dataEmployee, JsonRequestBehavior.AllowGet) 
} 

public ActionResult LoadBrandBudgetData() 
{ 
    List<BrandBudget> dataBrandBudget = .... 
    return Json(dataBrandBudget, JsonRequestBehavior.AllowGet) 
} 

+0

내가 아약스를 수정하지 않습니다 어떤 방법이? 왜냐하면 나는 많은 modul에서이 반환 값을 호출하기 때문에 –

+0

먼저 확인하십시오. 스크립트를 수정하지 않아도됩니다. (확실하지 않으므로 아무것도 게시하지 않았습니다.) –

+0

안녕하세요 Stephen 제가 하나씩 선언하여 할 수 있습니다. 내 컨트롤러의 모든 반환 값. 하지만이 클래스의 LargeJsonResult가 내 케이스에서 작동하지 않는 것 같습니다. –

관련 문제