回发后保留FileUpload控件的路径

Fir*_*and 8 asp.net file-upload

我在UpdatePanel中有一个FileUpload控件和一个DropDownlist控件,当用户为FileUpload控件选择一个文件(还没有上传)时,同时用户从DropDownList控件中选择一个选项,这将导致回发!一旦页面回发,FileUpload控件中选择的路径将消失.如何保留FileUpload控件中的路径?文件上传功能正常.我希望在回发期间可以保留FileUpload控件中的路径.

我已尝试过以下解决方案,但"FileUpload1.HasFile"将向我返回false.

            If Session("FileUpload1") Is Nothing AndAlso Upload.HasFile Then
                Session("FileUpload1") = Upload
                lblPhotoUploadErr.Text = Upload.FileName
            ElseIf Session("FileUpload1") IsNot Nothing AndAlso (Not Upload.HasFile) Then
                Upload = DirectCast(Session("FileUpload1"), FileUpload)
                lblPhotoUploadErr.Text = Upload.FileName
            ElseIf Upload.HasFile Then
                Session("FileUpload1") = Upload
                lblPhotoUploadErr.Text = Upload.FileName
            End If
Run Code Online (Sandbox Code Playgroud)

但执行时,下面的上传功能中的"Upload.HasFile"将为true.

Public Sub uploadPhoto()
    Dim FileOK As Boolean = False
    Dim FileSaved As Boolean = False
    Dim CandidateCode As String = Nothing
    Dim newFileName As String = Nothing

    Dim extension As String = Nothing
    Dim fileNameWithoutExt As String = Nothing

    If txtCandidateCode.Text.Trim <> "" Then
        CandidateCode = txtCandidateCode.Text.Trim
    End If

    If Upload.HasFile Then
        Dim FileExtension As String = Path.GetExtension(Upload.FileName).ToLower
        Dim allowedExtensions() As String = {".png", ".jpeg", ".jpg", ".gif"}

        Dim i As Integer = 0
        Do While (i < allowedExtensions.Length)
            If (FileExtension = allowedExtensions(i)) Then
                FileOK = True
            End If
            i = (i + 1)
        Loop
    End If

    If FileOK Then
        Try
            fileNameWithoutExt = Path.GetFileNameWithoutExtension(Upload.FileName)
            extension = Path.GetExtension(Upload.FileName)
            newFileName = fileNameWithoutExt + "_" + CandidateCode + extension

            Upload.PostedFile.SaveAs((path1 + newFileName))
            FileSaved = True
        Catch ex As Exception
            lblPhotoUploadErr.Text = ("File could not be uploaded." + ex.Message.ToString)
            FileSaved = False
        End Try
    Else
        lblPhotoUploadErr.Text = "Cannot accept files of this type."
    End If

    If FileSaved Then
        pnlUpload.Visible = False
        imgPhoto.ImageUrl = ("~/images/" + newFileName)
        hfPhotoUploadPath.Value = ("~/images/" + newFileName)

        hfFileExtension.Value = extension
        hfPhotoUploadFileName.Value = fileNameWithoutExt
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

Wil*_*lem 10

如果从UpdatePanel中取出它,FileUpload将只保留它的值.这样你仍然可以使用DropDownList及其AutoPostBack完成所有操作,但是ajax-postback不会刷新FileUpload,导致它变空.这样你就不再需要postbacktriggers了.

放置UpdatePanel唯一DropDownList的回转和任何控件回发必须改变.如果这些控件不是彼此相邻,则可以使用多个UpdatePanel,AutoPostBack将刷新所有这些(默认行为,您甚至可以更改它).


adr*_*nos 3

dropDown需要回发吗?我认为出于安全原因,文件上传在 updatePanels 内不起作用。看这里:

http://geekswithblogs.net/ranganh/archive/2008/04/01/file-upload-in-updatepanel-asp.net-ajax.aspx