2011-07-22 96 views
0

我有一個文本框,在我的aspx頁面,我創建了一個會話屬性(文本型),則:參考對象的Session屬性

textBoxInSession = myTextBox;

如果我更改了textBoxInSession Text屬性,myTextBox中的Text屬性不會改變。

是不是textBoxInSession對myTextBox的引用?

+1

讓我們看看有問題的實際代碼。你爲什麼要保存整個文本框而不僅僅是文本?如果您試圖獲得更改通知,那麼您可能需要查看NodeJS –

回答

0

testBixInSession是您的頁面文本框的副本,而不是引用。

+1

會話存儲參考,而不是副本。這只是一個新的頁面有另一個實例。 –

1

當您的頁面提供新的請求時,它是一個新的頁面實例,包含您的控件的新實例。因此,TextBox是另一個實例,而不是您在先前請求中存儲在Session中的實例。

0

頁面的每個請求都由不同的線程處理,併爲該請求創建了類的新實例。存儲在會話中的文本框是前一頁請求中類的前一個實例的文本框。

您期望的行爲將在同一請求期間起作用。但是,由於您可以直接引用TextBox,所以它確實沒有用處。

2

通常,您不應該將UI元素/控件持久保存到會話或應用程序狀態。當你存儲一個對象實例時,你可以將它和所有內容中的引用保存在內存中。由於ASP.NET在每次執行頁面時都會創建一個新實例,因此如果大量使用此技術,則可能會導致大量內存被非垃圾回收頁面和控件實例佔用。

您應該存儲值類型,字符串和可序列化的POCO或業務層類型,並在需要時將它們重新綁定到UI控件。