Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从DataGrid在默认查看器中打开PDF_C#_Asp.net_Pdf - Fatal编程技术网

C# 从DataGrid在默认查看器中打开PDF

C# 从DataGrid在默认查看器中打开PDF,c#,asp.net,pdf,C#,Asp.net,Pdf,我有一个网格,显示文件夹中所有pdf文件的名称和链接。该链接将在浏览器中打开文件 这并不理想,因为浏览器会缓存文件,因此如果移动或更改文档,则仍可访问旧的缓存版本 是否可以让链接在默认安装的pdf查看器中打开文件并避免完全缓存 这是我的网格代码: <form runat="server"> Search for a file: <asp:TextBox ID="txtFilter" runat="server"></asp:TextBox> <a

我有一个网格,显示文件夹中所有pdf文件的名称和链接。该链接将在浏览器中打开文件

这并不理想,因为浏览器会缓存文件,因此如果移动或更改文档,则仍可访问旧的缓存版本

是否可以让链接在默认安装的pdf查看器中打开文件并避免完全缓存

这是我的网格代码:

<form runat="server">
Search for a file: <asp:TextBox ID="txtFilter" runat="server"></asp:TextBox>
    <asp:Button ID="btnShow"
        runat="server" Text="Display" onclick="btnShow_Click" />
</form>


<asp:DataGrid runat="server" id="FileList" Font-Name="Verdana" CellPadding="5"
AutoGenerateColumns="False" AlternatingItemStyle-BackColor="#eeeeee"
HeaderStyle-BackColor="Navy" HeaderStyle-ForeColor="White"
HeaderStyle-Font-Size="15pt" HeaderStyle-Font-Bold="True">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" 
       HeaderText="File Name" target="_blank"/>
<asp:BoundColumn DataField="LastWriteTime" HeaderText="Last Write Time"
    ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" />
</Columns>
</asp:DataGrid>  
政务司司长:


最好是提示用户一个对话框,让他下载文件,这样就可以避免在浏览器中缓存

试试下面的

HTML:

更改DataGrid Hyperlink列,如下所示:

<asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" 
       HeaderText="File Name" target="_blank"  DataNavigateUrlFormatString="Download.aspx?FileName={0}" />

我的默认pdf查看器是谷歌浏览器。。。所以对我来说,这两种方法都可能行不通。也许您可以在Web服务器级别禁用PDF缓存?@nvoigt可以这样做吗?即使您进行了服务器级别的更改,我的浏览器是否仍会缓存?我也使用Chrome。这确实可以避免缓存,但它会在每个下载它的用户的机器上创建文档的副本,这并不理想。这仍然是一种选择。我是否需要寻找一个开源的pdf web查看器,并找到一种将文档传递给它的方法?谢谢你的建议。你认为如果pdf位于iFrame中,它会被缓存吗?
<asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" 
       HeaderText="File Name" target="_blank"  DataNavigateUrlFormatString="Download.aspx?FileName={0}" />
       protected void Page_Load(object sender, EventArgs e)
        {
            string FName = Server.MapPath(@"Files\" + Request.QueryString["FileName"].ToString());
            Response.Clear();
            Response.ContentType = "application/pdf";
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + FName);
            Response.TransmitFile(FName);
            Response.End(); 
        }