Wie zum download einer excel-Datei und PDF-Datei mit den Jquery Ajax MVC
Ich bin mit MVC-Anwendung. Ich will download excel-Datei und PDF-Datei mithilfe von Jquery-AJAX.
In View Seite
<a href="javascript:void(0)" class="excelbtn" data-is-pdf="false" >Export To Excel</a>
<a href="javascript:void(0)" class="pdfbtn" data-is-pdf="true">Export To PDF</a>
Jquery, ajax
$.ajax({
type: 'GET',
url: '/Report/ExportReports',
contentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
data: {
Parameter1: Parameter1,
Parameter2: Parameter2,
},
cache: false,
success: function (isSuccess) {
if (isSuccess.Success) {
}
} else {
alert('Something went wrong. Please try again after sometime...');
}
},
error: function (data, status, e) {
}
});
Controller
public ActionResult ExportReports(string Parameter1, string Parameter2)
{
if (Parameter1 = "PDF")
{
DataTable exportData = grid.GetExportData(dataSource);
MemoryStream pdfStream = gridData.ExportToPDF(exportData, repType);
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + executeRepType + ".pdf");
Response.BinaryWrite(pdfStream.ToArray());
Response.End();
}
else
{
DataTable exportData = grid.GetExportData(dataSource);
MemoryStream excelStream = gridData.ExportToExcel(exportData, executeRepType);
//Write it back to the client
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=" + executeRepType + ".xlsx");
Response.BinaryWrite(excelStream.ToArray());//.GetAsByteArray());
Response.End();
}
return View();
}
Also im controller bekommen wir das alle Daten erhalten, aber wir sind nicht in der Lage, zurück in die Ansicht Seite.
warum brauchst du ajax?
InformationsquelleAutor Jagadisha B S | 2014-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, diese Lösung.
In View Seite
wenn Sie möchten, Ändern Sie den Wert von parameter1 und parameter2 dynamisch, als Sie können javascript verwenden, wie unten beschreiben
In Javascript:-
Controller:-
InformationsquelleAutor Deepak Patel
Ich würde vorschlagen, Sie machen die Dinge ein bisschen mehr einfach mit Hilfe von tools, die kommen out of the box.
Die System.Web.MVC.Controller.Datei bietet Ihnen eine Methode, die genau das tun, was Sie brauchen, mit byte-Arrays oder Streams oder Datei-Pfad. Anstatt also diesen Teil (und dasselbe gilt für pdf)
Ich würde so etwas wie das
Und es gibt keine wirkliche Notwendigkeit, in async-request. So können Sie einfach verwenden Sie den direkten link.
Response.End()
, die Seite Stoppt die Verarbeitung, nachdem ich die Datei schreiben.Je nachdem, was verwenden Sie für die front-end gibt es paar Lösungen. Der Klassiker wäre die Verwendung von @Ajax.ActionLink mit
OnSuccess
AjaxOption, wo Sie festlegen können javascript-Funktion, die ausgeführt werden, nachdem controllersuccesfully Bearbeitung Ihrer Anfrage. Als alternative können Sie @Html.ActionLink und geben Sie die id oder die Klasse attr wie@Html.ActionLink("LinkText","Action",null, new {@id="file"})
und fangen Sie auf mit jQuery, post von code$('#file').click(function(){$.post(this.href..)})
InformationsquelleAutor Valerii