2010-04-28 36 views
5

Tôi khá mới với jquery và asp.net mvc. Vấn đề của tôi là tôi đang gọi một phương thức trong một bộ điều khiển trả về một FileStreamResult. Điều này làm việc tốt, nhưng khi tôi gọi nó với bài đăng jQuery nó không hoạt động. Tôi có thể thấy với vs công cụ gỡ lỗi mà progam là exectuting phương pháp. Do đó tôi nghĩ rằng nó có cái gì để làm với cuộc gọi jQuery của tôi nên chăm sóc của tham số trả về? Somenoe?Bài đăng jQuery với FileStreamResult là giá trị trả lại

Mã jQuery:

<script type="text/javascript"> 
    function createPPT() { 
      $.post("<%= Url.Action("DownloadAsPowerpoint", "RightMenu")%>"); 
    } 
    </script> 

Phương pháp trong điều khiển:

public ActionResult DownloadAsPowerpoint() 
    { 
     Stream stream; 
     //... 
     HttpContext.Response.AddHeader("content-disposition", "attachment; filename=presentation.pptx"); 

     return new FileStreamResult(stream, "application/pptx"); 
    } 

một ai đó có thể giải thích và đưa cho tôi một số mã ví dụ? phương pháp

+0

Tại sao bạn cần phải gọi nó từ một hàm JavaScript? –

Trả lời

3

Sử dụng $ .ajax(), bởi vì bạn không gửi bất kỳ thông số:

function createPPT() { 
     //Show waiting dialog here 
     $.ajax({ 
      url: '<%=Url.Action("DownloadAsPowerpoint") %>', 
      method:'GET', 
      success: function (fileStream) { 
       //Hide waiting dialog here 
       alert(fileStream); //This is your filestream 
      } 
     }); 
     return false; 
    } 
+0

Điều tôi đang cố gắng làm là tôi muốn hiển thị hộp thoại jQuery trong khi phương thức 'DownloadAsPowerpoint' đang thực thi. chức năng createPPT() {$ ("# hộp thoại xác nhận") hộp thoại ({autoOpen: false, phương thức: true, resizable: false, closeOnEscape: false, open: function (event, ui) {$ (". ui-dialog-titlebar-close "). hide();}}); $ ("# hộp thoại xác nhận"). hộp thoại ('mở'); $ .post ("<% = Url.Action (" DownloadAsPowerpoint "," RightMenu ")%>"); $ ("# hộp thoại xác nhận"). dialog ('close'); – karl

+0

Vì tôi hiểu bạn đang cố gắng thêm hộp thoại xác nhận, phải không? Hộp thoại jQuery thực hiện không đồng bộ, do đó, nó hơi phức tạp một chút để làm cho nó được thực hiện đồng bộ và trả về kết quả cho hàm onclick. Thay vào đó, hãy thử sử dụng hàm xác nhận. Tôi đã chỉnh sửa bài đăng. – wassertim

+0

Xác nhận là tên không hợp lệ (Sao chép và dán). Tôi muốn một hộp thoại bật lên với một hình ảnh động nạp để bật lên và sau đó disepear khi phương pháp điều khiển của tôi được thực hiện. Vì vậy, nắm tay tôi muốn tải một div với aniamtion. Sau đó, tôi muốn thực hiện phương pháp điều khiển của tôi. Cuối cùng tôi muốn recive các filestream và ẩn div với các hình ảnh động. – karl

Các vấn đề liên quan