2011-04-06 76 views
1

什麼是我想要做的是在頁面生命週期的末端設置的ViewState變量:我有什麼,完全是裝asp.net頁面 - 用AJAX調用通信與客戶端的JavaScript ...當執行來自客戶端JavaScript的ajax調用時,將執行服務器代碼中的一些C#方法。在執行過程中,我想設置一個ViewState變量並在下一個回傳中使用它,但顯然ViewState變量沒有被存儲 - 因爲頁面被完全加載 - 所有的邏輯都在頁面生命週期結束時執行。設置視圖狀態變量

我之前並設置ViewState的變量之後試圖顯式調用這些方法:

 this.TrackViewState(); 
     if (startAddr != "") 
     { 
      ViewState["startAddress"] = startAddr; 
     } 
     this.SaveViewState(); 

,但沒有成功......在接下來的回傳,該ViewState["startAddress"]爲空。

任何建議,如果上面描述的功能可以實現? 謝謝!

+1

強烈推薦:http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx – StriplingWarrior 2011-04-06 21:59:20

回答

2

您可以覆蓋網頁的SaveViewState方法,看它是否你的代碼之前調用。 SaveViewState是您可以在ViewState中存儲不屬於控制層次結構的對象的最後一點。

protected override object SaveViewState() 
{ 
    if (startAddr != "") 
    { 
     ViewState["startAddress"] = startAddr; 
    } 
    return base.SaveViewState(); 
} 
+0

感謝您的答覆,但實際上SaveViewState()方法不會在分配startAddr之後調用...並且分配在執行期間執行的C#方法執行客戶端javascript(ajax) – GoG 2011-04-06 22:02:48

+2

ViewState在ajax回調期間不會持久化。改爲使用隱藏字段或會話。 – 2011-04-06 22:06:54

+0

謝謝,我已經用Session解決了它! – GoG 2011-04-06 22:17:39

0

您不應該直接調用SaveViewState方法。

檢查的EnableViewState設置爲true,在你的頁面。並檢查ViewState是否真的被分配。

+0

是的,調試後 - 顯然viewstate變量是分配的,但沒有存儲 - 在下一個回發它有價值null – GoG 2011-04-06 21:37:13

0

據我所知, ü不需要變量存儲在viewstate, 如果烏拉圭回合值從網頁, 獲得儘可能使用阿賈克斯回調UR(不知道使用CallBackPageMethod), u能在viewstate獲得價值不存儲。 juz store的值在JS變量。

讓我知道,如果任何建議或困惑?

希望它的作品!