2013-07-22 6 views
0

Я использую MVC3 и evopdf (http://www.evopdf.com/) для создания pdf-файла, когда пользователь нажимает кнопку печати.mvc3 и evopdf - отображать сообщение «обработка» при создании pdf

У меня есть начальный вид, который содержит кнопку формы и печати и второй вид, специально предназначенный для печати.

Нажатие на кнопку печати вызывает javascript для отправки формы, которая вызывает действие печати.

Что бы я хотел сказать, так это то, что после нажатия кнопки печати отображается сообщение «Обработка». Как только PDF был сгенерирован, я хочу, чтобы сообщение было удалено.

Это Javascript (я не включил все мои JavaScript, как есть части, которые не имеют отношения)

$(document).ready(function() { 
    $(".btn").click(function() { 
     var delay = 10; 
     $("#AjaxDelay").val(delay); 

     $.blockUI(); 
     $('#printForm').submit(); 
    }); 

    $('#printForm').submit(function() { 
     $.blockUI();  
     $.ajax({ 
      url: this.action, 
      type: this.method,   
      success: function (data) { 
       $.unblockUI(); 
       //I need to open the pdf in appropriate app, adobe pdf viewer or similar 
      }, 
      failure:function(data) { 
       alert("error"); 
       $.unblockUI(); 
      } 
     }); 
     return false; 
    }); 

}); 

Форма

@using (Html.BeginForm("PrintView", "Index", new { format = "pdf/", id = Model.ID,  AjaxDelay = Model.AjaxDelay }, FormMethod.Get, new { id="printForm" })) 
{ 
    @Html.HiddenFor(m=>m.AjaxDelay)   
    <button type="button" class="btn print" >Print</button>   
} 

IndexController

public ActionResult PrintView(int id) 
{   
    var model = GetData(id); 
    return View(model); 
} 

Это мой HttpHandler

public void ProcessRequest(HttpContext context) 
{ 
    if (!context.Request.IsAuthenticated) return;  
    ProducePDF(context, "pdf title", 20); 
} 

private void ProducePDF(HttpContext context, string title,int delay) 
{ 
    var pdfConverter = GetPdfConverter(); 

    // set the license key 
    pdfConverter.LicenseKey = "licence key here"; 
    pdfConverter.JavaScriptEnabled = true; 

    var pdfBytes = pdfConverter.GetPdfBytesFromUrl(context.Request.Url.ToString().Replace(".pdf/", "")); 

    // send the PDF document as a response to the browser for download 
    var response = HttpContext.Current.Response; 
    response.Clear(); 
    response.AddHeader("Content-Type", "application/pdf"); 
    response.AddHeader("Content-Disposition", String.Format("attachment; filename=" + title + ".pdf; size={0}", pdfBytes.Length)); 
    response.BinaryWrite(pdfBytes); 
    response.End(); 
} 

Спасибо.

ответ

0

Я нашел решение, которое использует плагин jquery cookie и добавляет куки-файл к ответу, как описано в этой статье stackoverflow.

Hide image using Javascript after controller action is complete MVC3

я должен сделать небольшое изменение в том, что я должен был указать путь при удалении куки.