※ 引述《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)