對於我的申請,我通過Server.Transfer
有一個頁面重定向到另一個頁面(在同一應用程序內)。我需要這樣做,因爲原始頁面有一個對象,我需要通過使用Page.PreviousPage
屬性來訪問。失去Server.Transfer的局部變量
一旦我的「目的地」頁面已經被完全加載,我所做的源頁面的對象的本地深克隆突然從內存中釋放一次我執行回發?這是由設計 - 與Server.Transfer有關嗎?
一個例子...
Page1.aspx的:
Public Structure myCustomObject
Implements ICloneable
Dim someField as String = "default value" ' Default value
Public Function Clone() As Object Implements System.ICloneable.Clone
Dim temp as new myCustomObject
temp.someField = Me.someField
Return temp
End Function
End Structure
Dim obj As myCustomObject
Public ReadOnly Property objProp as myCustomObject
Get
Return obj
End Get
End Property
objProp.someField = "changed value from source page"
Server.Transfer("page2.aspx", True)
Page2.aspx:
(onLoad)
Dim newObj As myCustomObject
newObj = Page.PreviousPage.objProp.Clone()
Debug.Write(newObj.someField) ' Output: "changed value from source page"
在這一點上,一切正常,因爲它應該。東西克隆正確,一切都很好。
(Let's say this is on a button click event)
Debug.Write(newObj.someField) ' Output: "default value"<- This is NOT "changed value from source page" for some reason when it was working literally a few lines ago!
這是我在這裏,我得到的問題。我的猜測是Server.Transfer在加載新頁面後會停止與源頁面的任何關聯。
是否有跨頁物體通過更好的辦法?
如果你把一個按鈕和頁面上的服務器端點擊可以從點擊事件訪問對象?你能顯示一些代碼嗎? –
我所說的可能有點不清楚,但我不知道有任何其他方式來表達它。 – danyim
這對我來說味道不好。當然,您可以將原始對象存儲在其他容器中,並在重定向頁面的頁面加載中將其拉回。 – Graham