如何通过单击HyperLink打开文件

时间:2012-09-03 09:44:43

标签: c# asp.net visual-studio-2010 web-applications hyperlink

我有这张桌子

enter image description here

我想点击链接,文件(无论文件)将在新的弹出窗口中打开。

这是我的代码:

<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。任何人都可以帮助我或任何想法如何做到这一点。感谢

3 个答案:

答案 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"))%>