我在ASP.Net中有一個VB代碼隱藏的web應用程序。我需要一個List
變量,我聲明只要該人在頁面上就可以持久化,但是當前任何時候一個控件發回代碼,所有內容都會被清除。我對ASP.net完全陌生,所以我不知道這是否可能。可以用Session
變量完成嗎?那些似乎只限於基本類型,但我可能是錯的。有沒有辦法阻止ASP.Net webapp清除VB端的頁面變量?
3
A
回答
2
使用ASP.Net它會在每次頁面加載時創建Code Behind類的新實例,這就是爲什麼您的類級變量正在被重置。
你最好的選擇可能是將你想要保留的列表存儲在會話中。如果它使事情變得更容易,您可以爲從會話變量中讀取數據的列表創建一個getter。在C#中,它看起來像:
private List MyList
{
get { return Session["ListKey"] as List; }
set { Session["ListKey"] = value; }
}
3
調查ASP.NET ViewState。如果你使用它,你也應該知道很多問題,包括頁面大小膨脹和性能問題。 C#代碼(SRY我不擅長VB)是:
List<int> MyList
{
get { return (List<int>) ViewState["mylist"]; }
set { ViewState["mylist"] = value; }
}
注:不要忘了初始化這個變量。
關於使用會話狀態的注意事項:如果用戶同時打開2個或更多窗口,則這不起作用。
1
0
這是我最終使用的代碼。
Private Property ChangedControls() As List(Of Control)
Get
Return DirectCast(Session("changedControls"), List(Of Control))
End Get
Set(ByVal value As List(Of Control))
Session("changedControls") = value
End Set
End Property
在頁面加載時指定一個新列表工作得很好。
相關問題
- 1. 有沒有辦法阻止TinyMCE自動關注頁面加載?
- 2. 有沒有辦法阻止WPF頁面被導航?
- 3. 有沒有辦法阻止廣告導致頁面重定向?
- 4. 有沒有辦法阻止WatIn超時?
- 5. 有沒有辦法阻止代理?
- 6. 有沒有辦法阻止html警告?
- 7. 有沒有辦法阻止在PHP中打開的端口?
- 8. 有沒有辦法在調用drawRect之前阻止GLKView清除上下文:?
- 9. 有沒有辦法阻止發送空變量的GET方法形式?
- 10. 有沒有辦法阻止byobu終端超時?
- 11. 有沒有辦法清除CookieContainer?
- 12. 有沒有辦法清除uipickerview選擇?
- 13. 有沒有辦法清除AS3/AIR
- 14. 有沒有辦法阻止JFormattedTextField自動擦除無效輸入?
- 15. 有沒有辦法阻止Googlebot索引頁面的某些部分?
- 16. 有沒有辦法阻止計時器蠕變?
- 17. 有沒有辦法阻止ASP.NET CreateUserWizard將表格添加到HTML中?
- 18. JQuery手機,有沒有辦法阻止SELECT框成爲對話框頁面?
- 19. 有沒有什麼辦法阻止瀏覽器頁面滾動瀏覽器
- 20. 有沒有辦法阻止下載頁面在R Shiny中打開?
- 21. 有沒有辦法阻止WPF CheckBox觸發Checked事件?
- 22. 有沒有辦法清除使用source <(grep = ...)讀取的變量?
- 23. 有沒有辦法阻止訪問jQuery庫
- 24. 有沒有辦法阻止訪客瀏覽的帖子?
- 25. 有沒有辦法清除TextBox的文本沒有TextChanged射擊?
- 26. 有沒有辦法停止瀏覽器的頁面加載?
- 27. 有沒有辦法阻止TeamCity檢查所有VCSRoots?
- 28. 有沒有辦法到達ASP.NET頁面上的HTML控件?
- 29. 有沒有辦法輕鬆打印ASP.NET網站的頁面?
- 30. 有沒有辦法阻止腳本加載兩次? JavaScript
他使用VB :) – 2010-06-17 16:54:04
我只是聲明一個列表並將它保存到會話中,例如:'Session(「ListOfStuff」)= codeBehindList'? – 2010-06-17 16:54:10
@Francisco:謝謝,但我可以設法從C#翻譯爲VB :) – 2010-06-17 16:56:09