2014-07-24 3 views
0

사용자가 다운로드해야하는 Excel 파일을 생성하기 위해 컨트롤러를 목록에 전달하고 있습니다. 목록 오전 통과 10000 개 기록 컨트롤러에 목록을 보내어 Excel 파일을 다운로드하십시오.

여기 내 컨트롤러 방법 여기

[HttpPost] 
    public FileResult Result(List<List> Content) 
    {    
     var stream = new MemoryStream(); 
     var serializer = new XmlSerializer(typeof(List<Content>)); 

     var data = Transformer.TransformToExcelFormat(Content); 
     //We turn it into an XML and save it in the memory 
     serializer.Serialize(stream, data); 
     stream.Position = 0; 
     //We return the XML from the memory as a .xls file 
     return File(stream, "application/vnd.ms-excel", "Template.xls"); 
    } 

내 자바 스크립트

var Content = { "Content": ItemList() }; 
    var pack = ko.toJSON(Content); 

    $.ajax({ 
     url: baseUrl + '/Client/Result', 
     type: "POST", 
     datatype: "json",   
     data: pack, 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 
     // Just wondering how to handle success result. 
     } 
    }); 

내가 성공으로 이어질 것입니다 제안을 주셔서 감사합니다입니다

개까지 할 수 있습니다.

감사합니다.

답변

1

아약스를 통해 파일을 다운로드 할 수 없습니다. window.location.assign

한 가지 방법은 그것이 PARAMS (목록) serialize하고 사용하는 것입니다

var serialized = $.param(pack); 

window.location.assign(baseUrl + '/Client/Result' + '?' + serialized); 

당신이 기록을 많이 가지고 있기 때문에 발생할 수 있습니다 가능한 문제는 당신 일 수 있었다 최대 쿼리 문자열 길이를 초과합니다.

또한 컨트롤러 메서드에서 [HttpPost]을 제거하십시오.


또 다른 방법은, 아약스 요청을 보내 파일을 생성하고 저장하고, 저장된 파일의 다운로드 URL을 반환하고 프로그래밍 방식으로 JS에서 앵커 요소를 생성하고 클릭하는 것입니다.

희망, 또는 적어도 올바른 방향을 가리킬 수 있습니다.

[1] http://api.jquery.com/jquery.param/

[2] Download File Using Javascript/jQuery

관련 문제