Asp.net mvc创建pdf异步按钮点击



我已经创建了一个应用程序服务器端,它将在请求时创建报告的pdf。然后可以将该报告的链接发送回客户端。

我的问题是如何将其与asp.net mvc网站中的按钮点击事件联系起来。所以情况是:

  1. 用户填写了几个框
  2. 单击生成报告按钮
  3. 显示一个小负载反馈指示器
  4. 请求被发送到服务器,然后服务器生成PDF报告,并发送回服务器上托管的PDF的url链接
  5. pdf将显示在用户浏览器中(可能在新窗口中)

这可能吗?周围有什么例子可以说明如何做到这一点吗?

提前感谢

我也做过类似的事情
当用户点击按钮时,它会向服务器发送一个ajax请求,传递一些数据:

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: '<%=Url.Action("GenerateReport", "MyController")%>',
    data: { Param1: $('#Param1').val() , Param2: $('#Param2').val() },
    beforeSend: function(xhr) {
         $.blockUI({ message: '<h1> printing ...</h1>', css: { border: 'none', padding: '15px', backgroundColor: '#000', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', opacity: .5, color: '#fff'} });
    },
    success: function(result) {
        if (result.Success) {
           FetchPdfDocument('<%=Url.Action("GetPdfReport", "MyController", New With {.id = "/"})%>' + result.Guid);
    }
    else {
        alert("Problems!");
    }
    },
    complete: function() {
       $.unblockUI();
    },
    error: function(req, status, error) {
       alert(error);
    }
});

控制器将文档写入磁盘,并发回一个guid,该guid是PDF文档的名称。

这是打开创建IFRAME:的文件的另一个javascript位

function FetchPdfDocument(UrlToPdf)
     {
     $('#ifPdfReport').remove();
     $(document.body).append('<IFRAME id="ifPdfReport" style="display:none;">');
     $('iframe#ifPdfReport').attr('src', UrlToPdf);
     // $('#ifPdfReport').load(function () { });                    
     }

我使用jQueryBlockUI作为加载反馈指示器。希望能有所帮助。

最新更新