Ich bin neu bei C# und ich möchte eine neu und dynamisch erstellte PDF auf der Web-Browser-Client-Seite auf einer neuen Registerkarte mit HttpResponseMessage anzeigen.PDF auf neuem Tab nach AJAX-Aufruf MVC C anzeigen #
Das erstellte PDF ist gültig. Dies ist mein Controller-Code:
[HttpGet]
public HttpResponseMessage ShowPDF()
{
MemoryStream ms = new GetPDF();
Byte[] bytes = ms.GetBuffer();
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
Response.AppendHeader("Content-Disposition", "inline; filename=test.pdf");
result.Content = new StreamContent(ms);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
return result;
}
Nach dem Einschalten Taste auf HTML-Seite klicken, nichts passiert, kein Fehler, aber kein neues PDF zu angezeigt. Ich habe versucht, mit MemoryStream oder Buffer, aber nichts scheint zu funktionieren.
EDIT
Hier ist meine Ansicht Code:
<button id="GetPDF" class="btn btn-primary pull-right">GET PDF</button>
Javascript:
$('#GetPDF').click(function (e) {
e.preventDefault();
$.ajax({
url: '@Url.Action("ShowPDF", "Controller")',
method: 'GET',
success: function (data, textStatus, jqXHR) {
//Showing something but what
},
error: function (jqXHR, textStatus, errorThrown) {
//Showing error message
}
});
});
Welcher Knopf? Sie haben keine Schaltfläche angezeigt. Haben Sie versucht, den Code zu debuggen? Sicherstellen, dass Ihre Aktionsmethode erreicht ist usw.? – mason
Ich habe meinen Beitrag bearbeitet, und ja meine Aktionsmethode wird aufgerufen. – rvsntn
nichts passiert mindestens teilweise, weil du mit dem Ergebnis deines Ajax-Aufrufs nichts machst. Es sei denn, Sie haben in Ihrem Beispiel den Inhalt des Rückrufs "Erfolg" verpasst. Und es ist gut, dass Ihre Aktionsmethode aufgerufen wird. Haben Sie also überprüft, dass in der Antwort definitiv Inhalt zurückgegeben wird? – ADyson