看板 Web_Design 關於我們 聯絡資訊
※ 引述《jimshih (傳說中的果汁學長)》之銘言: : 我在A網頁, 按下一個按鈕後 : 新增一個 ViewState 變數: ViewState.Add("DateText",tbxDateText); : 以及一個 Session 變數: Session.Add("Repeat",true); : 然後, 重導回自己: Response.Redirect (Request.Url.AbsoluteUri,true); : 然後在 Page_Load 裡去判斷... : if (!this.IsPostBack) : { : if (Session["Repeat"] != null) : { : Session.Remove("Repeat"); : tbxDateText.Text = ViewState["DateText"].ToString(); : Page.RegisterScriptBlock("Repeat","<script language=''..."); : } : } : 結果得到, ViewState["DateText"] = null 的結果.. : 可是我明明在按下按鈕時有設值給他了呀.... : 奇怪, 如果他只能活在一次的Page_Load執行緒裡的話 : 那我用全域變數 public string dateText 來給值, 抓值就好了 : 那 ViewState 到底能拿來幹嘛? : "裝高級" 用的嗎? 好讓人看到程式碼覺得這個設計師很厲害, : 寫的東西人家看不懂 (其實用全域變數就可以了??) 你誤會ViewState的用途了 ViewState就像上一篇大大po的文章寫的 都是要用來保存頁面上的資訊的 不然Postback回來 系統怎麼知道你頁面上有哪些控制項 還有這些控制項的值 而ViewState的範圍只現在該頁面 所以你用Response.Redirect等於是離開了這頁面 重新發Request要求瀏覽該頁面 當然你設定的ViewState就不會出現在新的頁面上 -- 我的技術部落格 -- Derek.NET-- http://blog.xuite.net/cct0201/derek 技術 / 技巧 / 管理 / 心得 歡迎瀏覽‧歡迎討論‧歡迎指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.1.178 ※ 編輯: ganymade 來自: 220.132.1.178 (08/31 16:38)