Показать pdf в браузере в ASP.NET MVC - PullRequest
3 голосов
/ 09 июня 2010

У меня есть вкладка на моей странице, когда я нажимаю на эту вкладку, мне нужно показать PDF-файл на странице (браузер). Для этого я пишу функцию управления вот так

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

Я использовал это вместо File, но все еще показываю ту же проблему

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 Ответ

0 голосов
/ 09 июня 2010

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

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

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

Наконец, если вы хотите открыть PDF только внутри какой-то части страницы, вы можете встроить его в разметку.

Таким образом, в основном у вас будет действие контроллера, которое будет возвращать частичный 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...