0

我有一个带有FileUpload控件的 HTML 页面(好的,ASP.NET)。

<asp:GridView ID="DocGrid" ShowFooter="True" AutoGenerateColumns="False" runat="server" DataKeyNames="doc_id,req_id,doc_name,doc_path" BorderStyle="Solid" BorderWidth="1px" BorderColor="Silver" Width="500px" BackColor="White">
  <Columns>
    <asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Document">
      <ItemTemplate>
        <asp:HyperLink ID="HyperLink1" Text='<%# Bind("doc_name") %>' NavigateUrl='<%# Bind("doc_path") %>' Target="_blank" runat="server"></asp:HyperLink>
      </ItemTemplate>
      <FooterTemplate>
        <asp:FileUpload ID="fuFooter" runat="server" Width="350px" />
      </FooterTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

这不是 HTML 的全部内容,但它应该是理解问题所需的一切。

在后面的 VB 代码中,使用以下代码正确保存了上传的文件:

Dim fuFooter As FileUpload = CType(DocGrid.FooterRow.FindControl("fuFooter"), FileUpload)
If (fuFooter.HasFile) Then
  Dim uploadDir As String = Server.MapPath(VIRTUAL_REC_DOCS)
  If Not String.IsNullOrEmpty(uploadDir) Then
    Dim item As New ReqDoc()
    item.doc_name = fuFooter.FileName
    item.doc_path = uploadDir & fuFooter.FileName
    fuFooter.SaveAs(item.doc_path)
    item.req_id = Request.QueryString("Req_id")
    DocReqManager.insertReqDoc(item)
    bindDocGridgrid()
  End If
Else
  lblMessage.Text = "No file attached."
End If

事实上,这些文件确实会上传到我的VIRTUAL_REC_DOCS文件夹并保存到数据库中。

数据绑定后,项目将显示在表单的 HyperLink 控件中。

截屏

无论出于何种原因,单击超链接都不会打开该项目。

NavigateUrl 显示路径的方式是否存在问题,还是发生了其他问题?

4

1 回答 1

1

您使用的是物理路径,但需要使用文件 Url. NavigateUrl应该是这样的

NavigateUrl='<%# YourPageClassName.VIRTUAL_REC_DOCS + Bind("doc_name") %>'

YourPageClassName您的页面类的名称在哪里。

于 2013-07-10T14:56:46.677 回答