asp.net-mvc - 在浏览器的新标签页中打开 PDF

标签 asp.net-mvc asp.net-mvc-5

以前从未这样做过,所以不确定其中涉及什么。我确实搜索并找到了很多答案,但它们比我需要的更复杂。例如,他们需要放大、生成、创建准确的缩略图、在网页中嵌入实际的 PDF 等......但我的问题要简单得多:
如果我在网页上显示他的信息的人有一些 PDF 来显示我只想在页面上放置一个通用的 PDF 图标,人们点击它,实际的 PDF 会在浏览器的新选项卡中打开。

只是这样做有什么关系? 它不像文件路径 ,PDF 以二进制对象的形式保存在 SQL Server 中,或者它在 SQL Server 中保存它所做的任何事情..它不是服务器上的文件磁盘路径

最佳答案

您的标签表示 asp.net-mvc。

创建一个 Controller 来处理对 PDF 文件的请求

伪:

[RoutePrefix("Pdf")]
public class PdfController : Controller {
    [Route("{id}"]
    public ActionResult GetPDF(int id) {    
        //...Code to extract pdf from SQLServer and store in stream
        Stream stream = GetDataFromSQLServerById(id);
        return File(stream,"filename.pdf");
    }
}

在客户端
<a href="/Pdf/123456" target="_blank">
    <img src="images/pdficon.jpg">
</a>

更新:

引用@ChrisPratt 的评论; (我忘了在我的答案中包含)

anchor 标记上的 target 属性会告诉浏览器在新选项卡中打开链接。

关于asp.net-mvc - 在浏览器的新标签页中打开 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37464577/

相关文章:

javascript - 在 View 中将 Razor 语法与 Javascript 混合

c# - 默认情况下,ASP.NET MVC 5 不发送 X-Frame-Options header

css - 无法将 css 类应用到 WebGrid 中的 @Html.DisplayFor,在我的 asp.net MVC 5 Web 应用程序中

c# - 超时已到 -> 无法连接到任何指定的 MySQL 主机

c# - 没有数据库的登录方式

c# - 如何注入(inject) UserManager & SignInManager

visual-studio-2013 - CS1617 : Invalid option '6' for/langversion; must be ISO-1, ISO-2、3、4、5 或默认值

asp.net-mvc-5 - Url.Action 可以在 MVC5 中指定路由吗?

asp.net-mvc - 数据库中未注册的用户

asp.net-mvc - 如何强制 Razor 让 Editorfor 输入 float 变量的数字类型?