0

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 コントロールに表示されます。

スクリーンショット

何らかの理由で、ハイパーリンクをクリックしてもアイテムは開きません。

NavigateUrl がパスを表示する方法に問題がありますか、それとも何か他のことが起こっていますか?

4

1 に答える 1

1

物理パスを使用していますが、ファイルの URL を使用する必要があります。NavigateUrl次のようなものでなければなりません

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

YourPageClassNameページクラスの名前はどこにありますか。

于 2013-07-10T14:56:46.677 に答える