所以我創建了這個web應用程序,它被設計成一個單頁面應用程序。有一個菜單只是在單個更新面板中加載各種用戶控件(設計爲表單)之一(清除控件,加載新控件等)。用戶做什麼都輸入,點擊保存,刪除等。在這些用戶控件中,有幾個數據綁定和內部依賴控件,這是我將它們加載到更新面板中的主要原因。現在
,我有過這樣的問題,即當用戶選擇一個新的菜單,然後進入更改數據綁定控件的值,控制損失僅在第一回發它的價值。我很確定這是由於清除了usercontrol所在的容器,因爲我已經嘗試清除並加載常規面板,而且我會遇到完全相同的問題。由於使用(!IsPostBack)在我的情況下不起作用,我剛剛創建了一個布爾會話變量來執行頁面和usercontrol之間的相同邏輯,就數據綁定而言。爲了進一步測試我的問題,我將應用程序更改爲多頁應用程序,問題消失;值在回發時保留。
所以,去我原來的觀點,我在使用mulitples頁中看到的功能;我認爲在單頁面版本中,如果我只是在代碼中添加了'Server.Transfer(thefaultfault.aspx)',我將保留從多頁面方法中獲得的功能,同時保持用戶在同一頁面上。它效果很好。沒有數據丟失,它的工作原理應該如此。這是不好的味道?所有的用戶功能和職責總是在一個頁面上執行,導航對他們沒有任何幫助。
我只是擔心基本上刷新頁面只是不好的做法或哈克,但它適用於應用程序的目的,以及節省不必要時創建2-3打打印頁面。我已經閱讀了一些線程,其中有人會這樣做只是爲了清除結果,或者是一些小問題,但僅此而已。
如果是差的做法(或者即使它不是),便叫人有一個解決方案,在第一時間回傳值的損失?我在master,page,usercontrol和子控件上啓用了enableviewstate = true和viewstatemode =啓用了數據綁定。預先感謝您的任何意見。