我想解決一個真正的蹩腳的ASP.net 4.0程序交給我。編寫它的人沒有使用正常的asp.net標準。我自己對ASP.net相當陌生,並且儘可能多地瞭解它。在任何情況下,它都是一個ASP.Net 4.0 webforms應用程序,後面帶有C#代碼。如何在代碼後面的所有方法之間共享變量?
我正在處理一個頁面,它有一個調用標記本身後面的代碼的方法。我們可以調用這個方法get detailById。此方法調用Web服務,該服務使用此ID查詢數據庫,並將數據集返回到後面的代碼。一旦收到所有這些數據,它就會被寫入屏幕的表格中。這就是這種方法。在這個頁面的底部有各種不同的功能按鈕。例如,讓我們拿一個叫做Hello的按鈕。所有這個按鈕所要做的就是訪問在detailById方法中獲得的字段之一(例如:用戶名)。 我該如何使這個變量值可用於方法後面的所有代碼?我認爲以下的想法:
重新查詢數據庫一樣detailById實現該領域,但這似乎非常低效的。
爲頁面創建一個類級別的變量,並將它的值設置爲detailById方法中的用戶名變量。這沒有用。當我點擊「你好」按鈕時,用戶名缺失。我知道它是在detialById方法中獲得的。
然後,我認爲回發可能是值消失的責任,所以我將用戶名值存儲在一個ViewState變量中,而在detailById方法中。當我試圖訪問這個變量時,它也是空的。我不知道爲什麼。
最後,我把這個值放在Session中,而在detailById方法中。這工作,價值能夠在我的各種代碼背後的方法引用。這感覺像是一個錯誤的方式來做到這一點。我對嗎?
什麼是好的/正確的方法來做到這一點?
我希望我明確提出了我的問題。謝謝。
您的意見是非常有幫助的,並在商標上。在你提到它之前,我不知道這些信息。我使用會話將其存儲在我正在修復的版本中。最近我重寫了它,並且一旦將代碼移動到Page_load事件中,就能正確使用Viewstate。謝謝! – user1911835 2013-07-17 04:30:20