2011-01-15 3 views
2

제가MVC를 사용하는 방법 AsyncControl에서 파일을 다운로드 하시겠습니까?

당연히
public class FileController : AsyncController 
{ 
    public ActionResult Download(FormCollection form) 
    { 
    FileContentResult file = new FileContentResult(Encoding.UTF8.GetBytes("10k file size"),"application/vnd.xls"); 
    file.FileDownloadName = "test.xls"; 

    return file; 
    } 
} 

하고, AJAX 형태가

<% var form = Ajax.BeginForm(...) %> 
    <input type="image" src="...gif" /> // this is my 1st attempt 
    <%= Ajax.ActionLink(...) %>   // 2nd attempt 
<% form.EndForm(); %> 
  1. 처음 방법 (입력 화상 TYPE =)을보십시오. 그것은 올바른 행동에 도달합니다. 클라이언트 쪽에서는 파일 다운로드가 없습니다.
  2. 그럼 내가 정말로 싫어하는 Ajax.ActionLink를 사용하려고합니다. 나는 좋은 이미지 단추, 링크 텍스트 싶지 않아. 다시 말하지만, 올바른 Action과 파일 다운로드가 이루어지지 않습니다. 하지만 다른 창에서 링크를 열면 파일 다운로드가 있습니다 !! 만드는 방법 AsyncController

    Q.으로 좋은 파일 downlaod을 만드는 방법

Q. Ajax.ActionLink LOK 당신은 서버에서 파일을 다운로드 Ajax를 사용할 수 없습니다

+0

처음에는 AsyncController = AjacController라고 생각했습니다. 하지만 그렇지 않습니다. – Bonshington

답변

0

나는 길을 발견했다 !!

그냥 규칙적인 형식의 iframe을 만들고 jquery를 사용하여 트리거하십시오.

$("iframe").contents().find("form").submit(); 

: 방화범 + Google 문서에 D

PS 신용. 같은 ActionResult에 파일 모든 게시물을 다운로드 2를 새로 하나를 제출

$('form').removeAttr("data-ajax"); 

3과 양식

$('form').attr("data-ajax", "true"); 

을 활성화 비활성화 :

5

좋은. 그 이유는 success 콜백에서 서버에 대한 비동기 요청을 성공하더라도 서버에서 보낸 파일 내용을 얻게되고 클라이언트 측에서이 파일을 많이 사용할 수 없기 때문입니다. 자바 스크립트는 파일 시스템에 액세스 할 수 없으므로 저장하지 못할 수 있습니다. 이것을 달성하는 방법은 보통 <form>을 사용하여 Download 액션을 가리키는 것입니다. 이 양식을 제출하면 사용자는 파일을 저장할 위치를 선택하라는 메시지가 표시되며 다운로드가 진행됩니다. 또한이를 위해 AsyncController가 필요하지 않습니다. 여기

은 예입니다 :

public class FileController : Controller 
{ 
    [HttpPost] 
    public ActionResult Download() 
    { 
     return File(
      Encoding.UTF8.GetBytes("10k file size"), 
      "application/vnd.xls", 
      "test.xls" 
     ); 
    } 
} 

하고 내부보기 :

<% using (Html.BeginForm("download", "file", FormMethod.Post)) { %> 
    <input 
     type="image" 
     src="<%: Url.Content("~/content/images/download.png") %>" 
     value="download" 
     alt="download" 
    /> 
<% } %> 

그리고 다운로드 버튼을 좋은 보이게하기 위해

, 당신은 좋은 download.png 이미지를 만들 수있는 양식 제출 버튼으로 사용됩니다.

3

나는 이것을 사용 하지만 그들 중 2 명은 CSV 또는 pdf 파일로 다운로드 할 수 있습니다.

다운로드가 아약스 제출을 단지 무력하게 할 때.

관련 문제