我有一个带有FileUpload控件的HTML页面(OK,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控件中。
无论出于何种原因,点击HyperLink都会不打开该项目。
NavigateUrl显示路径的方式是否存在问题,或者其他情况是否存在?
答案 0 :(得分:1)
您使用的是物理路径,但需要使用Url文件。 NavigateUrl
应该是
NavigateUrl='<%# YourPageClassName.VIRTUAL_REC_DOCS + Bind("doc_name") %>'
YourPageClassName
是您网页类的名称。