我做了類似的事情。
當用戶點擊該按鈕將它發送一個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是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() { });
}
我使用jQuery的BlockUI作爲負載反饋指標。 希望它有幫助。
最好的辦法可能是使用Ajax和帶有Json響應的控制器。讓它處理並返回url,然後將該url顯示給用戶。 – 2012-03-20 00:00:58