2010-06-09 3 views
2

У меня есть вкладка на моей странице, когда я нажимаю на эту вкладку, мне нужно показать pdf-файл на странице (в браузере). Для этого я пишу функцию контроля, как этотПоказать pdf в браузере 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"); 
} 

Теперь моя проблема, когда я сделать это, страница только показать некоторые нечитаемые данные не PDF.

Может быть проблемой из-за вкладку Jquery, я использую вкладку Jquery

я использовал это вместо файла, но по-прежнему показывает то же проблему

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

Это, вероятно, потому, что функция 'getdata', которую вы используете, не создает действительный PDF-файл. –

+0

Я получаю pdf в формате байта правильно, есть ли проблема в данных байтового байта в файл() – Pankaj

+0

Вы пытаетесь встроить это внутри страницы или ссылки на нее? Вы не можете внедрять PDF-файлы внутри такой страницы. – roryf

ответ

0

Как вы призывающее это PricedPdf действия ? Если вы звоните в AJAX, тогда забудьте об этом. Вы не можете вернуть PDF из AJAX-звонка или, точнее, можете, но вы не можете с ним справиться. Поэтому создать нормальный HTML ссылку, указывающую на это действие:

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

После того, как вы нажмете на результирующем якорь браузер будет перенаправлены на страницу, которая откроется в результате PDF, используя соответствующий плагин в вашей системе (если есть какие-либо). Если вы не хотите открывать PDF в текущем окне браузера, вы можете добавить атрибут target="_blank" к якорю.

И, наконец, если вы хотите открыть PDF только внутри части страницы, вы можете вставить разметку embed it.

Так в основном вы бы действия контроллера, который будет возвращать частичный HTML, содержащий включение PDF:

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

И парциальное может выглядеть следующим образом:

<%@ 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> 

И вы будете использовать это действие в вашем вызове AJAX.