C# 单击时下载PDF(不在浏览器中打开)

C# 单击时下载PDF(不在浏览器中打开),c#,asp.net,pdf,C#,Asp.net,Pdf,我有一个指向PDF文件的href链接,单击该链接可在浏览器的新页面中打开。我想下载这个,而不是打开一个新的标签 那么,如何使PDF文件链接可下载,而不是在浏览器中打开它们呢 代码如下: <asp:FormView ID="FormView2" runat="server"> <ItemTemplate> <asp:LoginView ID="LoginView1" runat="server">

我有一个指向PDF文件的href链接,单击该链接可在浏览器的新页面中打开。我想下载这个,而不是打开一个新的标签

那么,如何使PDF文件链接可下载,而不是在浏览器中打开它们呢

代码如下:

<asp:FormView ID="FormView2" runat="server">
            <ItemTemplate>
                <asp:LoginView ID="LoginView1" runat="server">
                    <LoggedInTemplate>
                          <asp:HyperLink ID="HyperLink1" ToolTip="Open" CssClass="button" runat="server" NavigateUrl='<%# Eval("PDFUrl") %>' Text="Open" Target="_blank"></asp:HyperLink>
                        <br />
                    </LoggedInTemplate>
                    <AnonymousTemplate>
                            <p>You need to log in to view the book.</p>
                    </AnonymousTemplate>
                </asp:LoginView>
            </ItemTemplate>
        </asp:FormView>

只需将属性
下载
添加到


有人问过类似的问题。

你能发布一些示例url到你正在显示的PDF文件吗?当单击它时,它会在一个新选项卡中指向类似的内容:这不是HTML5的属性吗?然后我建议在你的回答中提及它,因为OP可能需要支持
html5
不兼容的浏览器。即使这个属性在代码中无效,并且它表明后面必须跟一个等号和值,它在浏览器中也可以工作!谢谢你,阿林丹@用户123456,忽略这一点,继续尝试吧,它应该会起作用。我也遇到过这个问题,但它最终还是起了作用!
protected void Page_Load(object sender, EventArgs e)
{
    int bookId = Convert.ToInt32(Request.QueryString.Get("BookId"));


    using (LibraryEntities entities = new LibraryEntities())
    {
        var book = (from r in entities.Books
                          where r.Id == bookId
                          select r);
        FormView2.DataSource = book;
        FormView2.DataBind();
    }
}
<asp:HyperLink ID="HyperLink1" ToolTip="Open" CssClass="button" runat="server" 
               NavigateUrl='<%# Eval("PDFUrl") %>' Text="Open" Target="_blank" download
</asp:HyperLink>
Response.Clear(); //eliminates issues where some response has already been sent
Response.ContentType = "text/plain";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.sql", filename));
Response.Write(yourSQL);
Response.End();