我有这张桌子
我想点击链接,文件(无论文件)将在新的弹出窗口中打开。
这是我的代码:
<asp:Repeater ID="dokumente" runat="server">
<ItemTemplate>
<tr>
<td><asp:HyperLink ID="HyperLink4" runat="server" Text='<%# Eval("DokuTyp") %>' NavigateUrl='file://<%# Eval("File") %>'></asp:HyperLink></td>
<td><%# Eval("Description")%></td>
<td><%# Eval("Date") %></td>
<td><%# Eval("File") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
但它不适用于NavigateUrl。任何人都可以帮助我或任何想法如何做到这一点。感谢
答案 0 :(得分:5)
file:///适用于您自己计算机上的资源。
要在服务器上打开文件,您必须链接到服务器上的URL。 使用:
HttpContext.Current.Request.ResolveUrl(pathOnServer);
更改您的代码:
<asp:Repeater ID="dokumente" runat="server">
<ItemTemplate>
<tr>
<td><asp:HyperLink ID="HyperLink4" runat="server" Text='<%# Eval("DokuTyp") %>' NavigateUrl='<%# HttpContext.Current.Request.ResolveUrl(Eval("File")) %>'></asp:HyperLink></td>
<td><%# Eval("Description")%></td>
<td><%# Eval("Date") %></td>
<td><%# Eval("File") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
服务器
答案 1 :(得分:1)
“文件”协议在用户计算机中打开文件。 我想你必须在服务器端读取文件并调用Resposne.Write。
答案 2 :(得分:0)
如果要在服务器上查找文件,可以使用Server.MapPath
方法;如果要在服务器上查找文件,“file://”是不正确的URL
NavigateUrl=<%#Server.MapPath(DataBinder.Eval("File"))%>