2013-01-18 51 views
0

有没有办法使用NavigateUrl从GridView中的远程服务器目录打开PDF文件?我可以从文本框中检索文件编号并生成链接,但是当你点击链接时,什么都不会发生。我的NavigateUrl的格式可能是错误的,因为它位于远程服务器上并试图在Web浏览器中打开?我的代码如下。提前致谢。ASP.Net NavigateUrl到远程服务器

  <asp:TemplateField> 
       <ItemTemplate> 
        <asp:HyperLink ID="HyperLink1" runat="server" 
         NavigateUrl='<%# Eval("Name", "file:\\fileserver\pdf\{0}") %>' 
         Target="_blank" Text='<%# Eval("Name", "{0:d}") %>'></asp:HyperLink> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:BoundField DataField="Name" DataFormatString="{0:d}" HeaderText="FILE NUMBER" /> 
      <asp:BoundField DataField="CreationTime" DataFormatString="{0:d}" HeaderText="DATE ADDED" /> 
      <asp:BoundField DataField="Length" DataFormatString="{0:#,### bytes}" HeaderText="FILE SIZE" /> 

回答

0

您需要通过http://而不是file://才能访问该文件,以便链接正常工作。

设置完成后,使用Server.MapPath()方法根据文件的路径生成URL。

+0

从您的asp.net应用程序访问文件。谢谢。我已经将它改为NavigateUrl ='<%#Server.MapPath(Eval(“Name”,“http:// fileserver/pdf/{0}”))%>',现在我得到“不是有效的虚拟路径“错误。我将如何通过http访问pdf文件? –

+0

有两件事需要检查:首先,有问题的文件夹已经通过ASP.Net工作进程和网络服务(这两种服务通常运行您的Web服务器)读取特权。第二:您可以随时将您的PDF文件复制到目录中在您的网站的根源之内。 –

+0

感谢您的帮助。通过http://创建一个虚拟目录以使文件可访问,解决了问题。 –

1

导航url需要看起来像一个URL而不是物理文件路径。像是http://server/path/x.pdf。如果您拥有存储文档的共享位置,请考虑添加指向远程服务器和目录的虚拟目录。之后,将有可能通过使用http://yourserver/virtualpath/x.pdf

+0

谢谢。在IIS中创建一个虚拟目录。会让你知道。 –

+0

了不起的消息。接受了您的建议并创建了一个虚拟目录子文件夹,并将NavigateUrl更改为='<%#Eval(“Name”,“/ fileserver/pdf/{0}”)%>'。重新刷新浏览器,点击文件编号链接,并打开一个新的标签,显示PDF文件。问题解决了。还有什么我需要纠正? –