我有一個頁面,用戶填充一些文本框,使用Submit按鈕將其保存到SQL數據庫。該頁面還包含一個允許他們上傳附件的按鈕。如果用戶在單擊提交按鈕以保存其他數據之前上傳附件,則在上載例程執行Response.Redirect(Request.Url.AbsoluteUri)後,將清除文本框中的值。我嘗試將我想要恢復的值保存到Session中,但我似乎無法恢復它們。調試器顯示它們在那裏,但是一旦執行了Response.Redirect,就不會執行下一行。我是ASP.NET的全新,所以我可能會錯過一些明顯的東西。這裏是上傳過程的代碼:Response.Redirect(Request.Url.AbsoluteURI)清除所有用戶條目
Protected Sub Upload(sender As Object, e As EventArgs) Handles btnUpload.Click
Session("Phone") = txtPhone.Text
Session("Name") = txtName.Text
Session("Email") = txtEmail.Text
Session("StartDate") = txtStartDate.Text
Session("EndDate") = txtEndDate.Text
Session("Subject") = txtSubject.Text
Session("Description") = txtDescription.Value
Dim filename As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim contentType As String = FileUpload1.PostedFile.ContentType
Using fs As Stream = FileUpload1.PostedFile.InputStream
Using br As New BinaryReader(fs)
Dim bytes As Byte() = br.ReadBytes(fs.Length)
Dim constr As String = ConfigurationManager.ConnectionStrings("EngineeringRequestsConnectionString").ConnectionString
Using con As New SqlConnection(constr)
Dim query As String = "insert into Attachments values (@id, @Name, @ContentType, @Data)"
Using cmd As New SqlCommand(query)
cmd.Connection = con
cmd.Parameters.Add("@id", SqlDbType.Int).Value = nextId
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename
cmd.Parameters.Add("@ContentType", SqlDbType.NVarChar).Value = contentType
cmd.Parameters.Add("@Data", SqlDbType.VarBinary).Value = bytes
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Using
End Using
End Using
hasUpload = True
Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri)
BindGrid()
End Sub
BindGrid()過程試圖從Session中恢復值,但從未得到執行。
If hasUpload Then
txtPhone.Text = CType(Session("Phone"), String)
txtName.Text = CType(Session("Name"), String)
txtStartDate.Text = CType(Session("StartDate"), String)
End If
這是我在SO上的第一篇文章。如果事先不清楚,我很抱歉。
好吧,如果你重定向到另一個頁面,那麼顯然下面的代碼將永遠不會執行(或者至少,結果永遠不會被看到),因爲你重定向到的新頁面被執行併發送到瀏覽器。你還期望什麼?即使您的重定向轉到_same page_,它也會創建該頁的_new refresh_,並從page_load事件開始執行,就像前一個執行上下文從未發生過一樣。我不認爲你需要重定向。如果你只是讓頁面完成,你會最終與網格綁定好。也許你需要學習ASP.NET頁面的生命週期 – ADyson
正如我所說,我是ASP.NET的全新人物,並試圖讓我的腦袋圍繞行爲。我會嘗試刪除重定向,看看是否解決了這個問題。 – KBatz