【问题标题】:asp:Hyperlink in Gridview open PDF in new browser windowasp:Gridview 中的超链接在新的浏览器窗口中打开 PDF
【发布时间】:2017-11-22 22:47:58
【问题描述】:

我目前有一个 gridview 可以动态创建asp:Hyperlinks 到 PDF 文件。现在,url 只是将文件下载到本地机器。让他们在新窗口中打开以便用户可以选择打印或下载的最简单方法是什么? Chrome 会自动下载它。 IE 要求打开或保存它。我只是希望它在浏览器窗口中打开。

<asp:TemplateField HeaderText="Name">
    <ItemTemplate>
        <asp:HyperLink ID="lblProductName" runat="server" Text='<%# Eval("name") %>' NavigateUrl="#" Target="_blank"  ></asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

实际的 NavigateUrl 是在后面的代码中创建的

HyperLink lblProductName = (HyperLink)e.Row.FindControl("lblProductName");
lblProductName.NavigateUrl = urlLink;

【问题讨论】:

  • Chrome 下载它是浏览器功能。
  • & IE 要求打开和保存 IE 的功能也是如此
  • stackoverflow.com/questions/9056103/… 参考这个我想你可能会得到答案,需要稍微调整一下
  • 打开或下载是用户自己浏览器的设置。您无法控制点击链接后会发生什么。
  • @VDWWD 我猜他想要的是,就像当你点击它时,预览会以新的标签可读格式打开文件。就像你想在雅虎邮件中查看文件时一样

标签: c# asp.net pdf gridview hyperlink


【解决方案1】:

添加一个新页面,比如 DownloadFile.aspx 并添加以下代码

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
    string fileName = Request.QueryString["pdffile"];
    string path = Server.MapPath("~/PDFs/") + fileName;
    Response.ContentType = "application/pdf";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
    Response.WriteFile(path);
    Response.Flush();
    Response.End();
}
}

现在在 GridView 中删除 LinkBut​​ton 并添加 HyperLink,如下所示

<asp:HyperLink ID="HyperLink1" runat="server" Target = "_Blank" NavigateUrl='<%# Eval("FileName","DownloadFile.aspx?PDFFile={0}") %>'></asp:HyperLink>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多