5

我有这张桌子

在此处输入图像描述

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

这是我的代码:

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

4

3 回答 3

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>

服务器在哪里

于 2012-09-03T09:55:28.527 回答
1

“文件”协议在用户计算机中打开一个文件。我猜你必须在服务器端读取文件并调用 Resposne.Write。

于 2012-09-03T09:49:23.737 回答
0

如果要在服务器上查找文件,可以使用Server.MapPath方法;如果您想在服务器上查找文件,“file://”不是正确的 url

NavigateUrl=<%#Server.MapPath(DataBinder.Eval("File"))%>
于 2012-09-03T09:59:33.720 回答