我有一個文本框,在我的aspx頁面,我創建了一個會話屬性(文本型),則:參考對象的Session屬性
textBoxInSession = myTextBox;
如果我更改了textBoxInSession Text屬性,myTextBox中的Text屬性不會改變。
是不是textBoxInSession對myTextBox的引用?
我有一個文本框,在我的aspx頁面,我創建了一個會話屬性(文本型),則:參考對象的Session屬性
textBoxInSession = myTextBox;
如果我更改了textBoxInSession Text屬性,myTextBox中的Text屬性不會改變。
是不是textBoxInSession對myTextBox的引用?
testBixInSession是您的頁面文本框的副本,而不是引用。
會話存儲參考,而不是副本。這只是一個新的頁面有另一個實例。 –
當您的頁面提供新的請求時,它是一個新的頁面實例,包含您的控件的新實例。因此,TextBox是另一個實例,而不是您在先前請求中存儲在Session中的實例。
頁面的每個請求都由不同的線程處理,併爲該請求創建了類的新實例。存儲在會話中的文本框是前一頁請求中類的前一個實例的文本框。
您期望的行爲將在同一請求期間起作用。但是,由於您可以直接引用TextBox,所以它確實沒有用處。
通常,您不應該將UI元素/控件持久保存到會話或應用程序狀態。當你存儲一個對象實例時,你可以將它和所有內容中的引用保存在內存中。由於ASP.NET在每次執行頁面時都會創建一個新實例,因此如果大量使用此技術,則可能會導致大量內存被非垃圾回收頁面和控件實例佔用。
您應該存儲值類型,字符串和可序列化的POCO或業務層類型,並在需要時將它們重新綁定到UI控件。
讓我們看看有問題的實際代碼。你爲什麼要保存整個文本框而不僅僅是文本?如果您試圖獲得更改通知,那麼您可能需要查看NodeJS –