2010-06-09 8 views
2

J'ai un onglet sur ma page, quand je clique sur cet onglet, j'ai besoin de montrer un fichier pdf sur la page (navigateur). Pour cela, je suis fonction écriture sur le contrôle comme celui-ciAfficher le pdf dans le navigateur dans ASP.NET MVC

public ActionResult PricedPdf(string projID,string fileName) 
{ 
    byte[] bArr = new byte[] { }; 
    bArr = getdata();  
    return File(bArr, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName+".pdf"); 
} 

Maintenant, mon problème est quand je rends cette page ne montrent que des données illisibles non pdf.

Peut-être le problème est dû à l'onglet jquery, je suis en utilisant l'onglet Jquery

J'ai utilisé ce à la place du fichier, mais toujours montrant même problème

public ActionResult PricedPdf(string projID, string fileName) 
{ 
    byte[] bArr = new byte[] { }; 
    bArr = getdata(); 
    Response.AddHeader("Content-disposition", "inline; filename=\"" + fileName + "\""); 
    Response.ContentType = "application/" + System.IO.Path.GetExtension(fileName).Replace(".", "");  
    Response.BinaryWrite(bArr); 
    Response.Flush(); 
} 
+1

C'est probablement parce que la fonction 'getdata' que vous utilisez ne génère pas un PDF valide. –

+0

je reçois pdf au format octet correct, y at-il un problème dans les données de l'octet de passe à Fichier() – Pankaj

+0

Essayez-vous d'intégrer cela dans une page ou un lien vers elle? Vous ne pouvez pas intégrer de fichiers PDF dans une page comme celle-ci. – roryf

Répondre

0

Comment appelez-vous cette action PricedPdf ? Si vous appelez avec AJAX alors oubliez-le. Vous ne pouvez pas renvoyer de PDF à partir d'un appel AJAX ou plus précisément vous pouvez mais vous ne pouvez pas en faire grand chose. Donc, créer un lien html normale pointant vers cette action:

<%= Html.ActionLink("show pdf", "PricedPdf") %> 

Une fois que vous cliquez sur l'ancre résultant du navigateur sera redirigé vers une page qui ouvrira le PDF résultant en utilisant le plug-in approprié installé sur votre système (à condition qu'il y en ait). Si vous ne voulez pas ouvrir le fichier PDF dans la fenêtre du navigateur en cours, vous pouvez ajouter l'attribut target="_blank" à l'ancre.

Enfin, si vous souhaitez ouvrir le PDF uniquement dans une partie de la page, vous pouvez embed it dans le balisage.

Donc, fondamentalement, vous auriez une action de contrôleur qui retourne un HTML partiel contenant l'inclusion PDF:

public ActionResult SomePartial() 
{ 
    return PartialView(); 
} 

Et la partie pourrait ressembler à ceci:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<object type="application/pdf" data="<%= Url.Action("PricedPdf") %>" width="500" height="650"> 
    Click <%= Html.ActionLink("here", "PricedPdf") %> to view the file 
</object> 

Et vous utiliseriez cette action dans votre appel AJAX.

Questions connexes