Server.Transfer 和 Response.Redirect 以及Server.Execute
Server.Transfer 是在伺服器上請求,不會要求瀏覽器一個新的http連線,因此可以減輕伺服器的負擔。
並且Transfer可以隱藏網址。
Server.Transfer只能導向自己的Web站台,導向外部站台會產生error。
Server.Transfer可以獲取來源網站的控制項。
Server.Transfer("目標網址",true);
後面的true或false 是是否要保留資訊到目標頁。
參考:https://dotblogs.com.tw/atowngit/2010/07/20/16648
傳值的方法
1.Response.Redirect
直接下一個http Request出去
Request("string");
Request.QueryString("string");
連接速度不算快,因為要來回兩次(客戶端 客戶端回應 跳轉目標 跳轉目標回應)
跳轉方法首先是先丟一個http requset給客戶端,通知要跳轉到新頁面,然後客戶端再傳送跳轉請求給伺服器端。
跳轉後所有資料都會丟失,不保存,因此需要Session
2.Server Transfer
將目前表單內容傳輸給指定的表單,可以夾帶的訊息量較多,只能傳輸到自己專案內容內
Request("string");
Request.Form("string");
速度相對快,因為只來回一次,但是只能在同一個站點的網頁下進行。
網址不變,但是實務上通常都會使用HttpContext.RewritePath()來做URL的Rewirting
3.Server.Execute
和Transfer很像,差別在於Transfer轉入XX.aspx做完後不會回來繼續執行,Execute會取得執行完的資料後回到原本的aspx繼續執行
通常用於將一個頁面所完成的事情插入原本的頁面進行動作。
4.Session["name"];
作用對於單一用戶。
避免使用太多Session,導致內存耗盡
5.Cookie對象變量
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = xxxx;
Response.AppendCookie(cookie_name);
Server.Transfer("xx.aspx");
xx.aspx >
string name = Request.Cookie["name"].value.ToString();
| 較項 | Response.Redirect() | Server.Transfer() | Server.Execute() |
|---|---|---|---|
| 目的地 | 可以切換到任何的網頁 | 只能切換到同目錄或子目錄的網頁 | 同Transfer() |
| 安全性 | url會變成你所指向的新網頁 | url不變,隱藏了新網頁的url及附帶的參數值 | 同Transfer() |
| 傳遞容量 | 受各瀏覽器的網址欄位長度限制(含傳遞引數) | 無 | 同Transfer() |
| 連接伺服器 | 來回伺服器兩次,故較受網路連線品質影響。 | 僅來回伺服器僅一次,於伺服器內進行轉址的動作。 | 同Transfer() |
參考:
https://ithelp.ithome.com.tw/articles/10219006
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/225144/
留言
張貼留言