標籤:
一、內建對象
(一)Response - 響應請求對象
1.定義:Response對象用於動態響應用戶端請示,控制發送給使用者的資訊,並將動態產生響應。Response對象只提供了一個資料集合cookie,它用於在用戶端寫入cookie值。若指定的cookie不存在,則建立它。若存在,則將自動進行更新。結果返回給用戶端瀏覽器。
2.方法
(1)Redirect
用法:Response.Redirect("url")
作用是在伺服器端重新導向於另一個網頁
(2)Write
功能:向用戶端發送瀏覽器能夠處理的各種資料,包括:html代碼,指令碼程式等
用法:Response.Write("")輸入字串在介面裡顯示,輸入<script>alert(‘‘)</script>彈出對話方塊
(二)Request - 擷取請求對象
Request["key"] - 預設返回的就是string類型
來擷取傳遞過來的值,Request對象的作用是與用戶端互動,收集用戶端的Form、Cookies、超連結,或者收集伺服器端的環境變數。
(三)Session 相對全域對象
在不同的瀏覽器之間傳值,像銀行之類的網站為了安全把使用者名稱密碼儲存在session裡面。每一台電腦訪問伺服器,都會是獨立的一套session,key值都一樣,但是內容都是不一樣的。
賦值:Session["key"] = 值;
在另一個網頁取值:首先先要判斷Session["key"] 是不是null,不是的話取值,否則定向到原網頁
string a = Session["key"];
優缺點:
Session是非常安全的,因為它存在於伺服器的記憶體中,取資料也是最快的;但是,Session不要濫用,因為會造成伺服器記憶體溢出,導致伺服器崩潰(為了避免同一帳號短時間大量訪問所以設定了看不清的驗證碼)
Session裡面不要放大東西,如果不用那麼就會造成資源浪費。
Session生命週期:20分鐘(當一個帳號關閉遊覽器後,仍然會在伺服器走完這20分鐘,使用者的每一個會導致頁面重新整理的操作都會使這20分鐘重新計時)
很多網站,特別是涉及到moneyde ,使用者長時間不操作之後都要重新登入就是因為他的生命週期。
ps:當一個使用者關閉遊覽器然後再用這個遊覽器登入相同的帳號後,串連就不是原來的串連了,就像是打客服電話,
用同一部手機撥打同一個客服電話,對面接電話的就不一定是同一個人了。
(四)Cookies
賦值: Response.Cookies["key"].Value =值;
取值: Request.Cookies["key"].Value;
與Session比較:
相同點:每一台電腦訪問伺服器,都會是獨立的一套session或者Cookies,key值都一樣,但是內容都是不一樣的。
不同點:●Session的儲存位置是儲存在伺服器記憶體上,Cookies儲存在使用者硬碟上
●Session沒有持久的,在不對頁面進行任何操作的情況下,它的儲存周期就是20分鐘;Cookies可以持久也可不持久,取決於使用者
設定生命週期: Response.Cookies["key"].Expires = DateTime.Now.AddDays(7);//儲存7天
問題:如果傳的是中文會亂碼
解決方案:輸入的文字用特定的編碼方式編碼。然後用該方式解碼
string a = HttpUtility.UrlEncode(值, System.Text.Encoding.GetEncoding("utf-8"));Response.Cookies["key"].Value = a;Response.Redirect("Default2.aspx");
if (Request.Cookies["user"] != null) 解碼{string a = HttpUtility.UrlDecode(Request.Cookies["key"].Value, System.Text.Encoding.GetEncoding("utf-8"));Label1.Text = a;}
(五)Application,比如說版本號碼,所有人擷取的都是同一個東西,使用範圍較小。
它是全域對象,全域只有這一個對象
只要被建立出來,所有人取的值都是一樣的
生命週期:永久
儲存位置:服務端
賦值:Application["key"]=值;
取值:Application("key");
(六)ViewState(瞭解)
可以理解成為病例
類似於中間過程,由於網頁的不固定性,點擊按鈕會重新整理,控制項賦得值藉助viewstate儲存,把重新整理前的值儲存成專門代碼。重新整理後再賦值給控制項
二、Repeater的Command操作(不常用)
1、ItemCommand事件 :在Repeater中所有能觸發事件的控制項,都會來觸發這一個事件
後台建立:在Page_Load中 Repeater1.ItemCommand += ,然後雙擊Tab鍵建立
2、CommandName : 判斷點擊的是什麼按鈕,
後台調用:e.CommandName
3、CommandArgument : 觸發事件所傳遞過來的主索引值資料,放在這裡面 介面值綁定時要用 單引號 !!!!!!
後台調用:e.CommandArgument
已刪除為例
<asp:Button ID="Button1" CommandName="Delete" CommandArgument=<%#Eval("UserName") %> runat="server" Text="刪除" /> //前台代碼--------------------------------------------------------------------------------------後台代碼 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Repeater1.DataSource = new UsersData().Select(); Repeater1.DataBind(); } Repeater1.ItemCommand += Repeater1_ItemCommand; } void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "Delete") { new UsersData().Delete(e.CommandArgument.ToString()); } } }
內建對象session ,cookic,Application,ViewState