我在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. 有沒有辦法阻止廣告導致頁面重定向?
- 2. 有沒有辦法阻止WPF頁面被導航?
- 3. 有沒有辦法阻止代理?
- 4. 有沒有辦法阻止在PHP中打開的端口?
- 5. 有沒有辦法在調用drawRect之前阻止GLKView清除上下文:?
- 6. 有沒有辦法阻止發送空變量的GET方法形式?
- 7. 有沒有辦法清除AS3/AIR
- 8. 有沒有辦法阻止Googlebot索引頁面的某些部分?
- 9. 有沒有辦法阻止計時器蠕變?
- 10. 有沒有什麼辦法阻止瀏覽器頁面滾動瀏覽器
- 11. JQuery手機,有沒有辦法阻止SELECT框成爲對話框頁面?
- 12. 有沒有辦法阻止WPF CheckBox觸發Checked事件?
- 13. 有沒有辦法清除使用source <(grep = ...)讀取的變量?
- 14. 有沒有辦法告訴瀏覽器在加載頁面時清除緩存?
- 15. 在非複合操作中有沒有辦法阻止施工?
- 16. 有沒有辦法阻止用戶放大瀏覽器顯示?
- 17. 有沒有辦法輕鬆打印ASP.NET網站的頁面?
- 18. 有沒有辦法阻止JQuery Mobile的重複事件?
- 19. 有沒有辦法阻止Maven測試重建數據庫?
- 20. 有沒有辦法'烘烤'變量?
- 21. 有沒有辦法測試變量「isForEachable」
- 22. 有沒有辦法阻止Azure存儲PutBlock方法超時?
- 23. 有沒有辦法讓一個asp.net頁面來自XSLT轉換?
- 24. 有沒有辦法阻止打印出一部分字符串?
- 25. 等待(0.5)有沒有辦法? --fflush()阻止stdin?
- 26. 有沒有辦法阻止用這個javascript/jquery提交表單?
- 27. 有沒有辦法阻止ie7加載一些內聯JavaScript?
- 28. VB沒有聲明變量
- 29. 有沒有辦法阻止基於ncurses的程序運行?
- 30. 有沒有辦法阻止AVPlayer的rate屬性被重置?
他使用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