C#中的Session


一:

網站開發中,為了保存用戶信息我們就會用到session。

Session具有以下特點:
(1)Session中的數據保存在服務器端;
(2)Session中可以保存任意類型的數據;
(2)Session默認的生命周期是20分鍾,可以手動設置更長或更短的時間。

我們在aspx頁面中的調用一般只需要這么寫:<%=session["key"]=value %>;

獲取session時一般這么寫:string username=session["username"],但是在給對象賦值的時候我們需要注意兩點

1:判斷是否為null

2:類型的轉換

例子:

//使用Session對象來傳送用戶的登錄名,在另一頁中將用戶的登錄名顯示出
//使用Session對象保存用戶登錄名的代碼如下:
Session.Remove("UserName");
Session["UserName"] = txtName.Text;
Response.Redirect("a.aspx");

這里用的重定向去跳轉到指定頁面;是要注意:如果我們的請求是通過Ajax方法的時候,重定向是不起作用的!

好,那這里讓我們分析一下Response.Redirect的跳轉原因:

->Response.Redirect是本地跳轉,並不服務端跳轉;是往瀏覽器端輸出一個響應碼,這個響應碼為301或者302,告訴瀏覽器跳轉。

二:

a:使用Session變量
使用Session變量是可以在頁面間傳遞值的的另一種方式,在本例中我們把控件中的值存在Session變量中,然后在另一個頁面中使用它,以不同頁面間實現值傳遞的目的。但是,需要注意的是在Session變量存儲過多的數據會消耗比較多的服務器資源,在使用session時應該慎重,當然了,我們也應該使用一些清理動作來去除一些不需要的session來降低資源的無謂消耗。

釋放方式:session.remove();

     session.removeAll();

       session.Abandon();

b:session傳遞數組的用法:

      

protected void Button1_Click(object sender, EventArgs e)
    {
        ArrayList sArr = new ArrayList();
        sArr.Add("0");
        sArr.Add("1");
        sArr.Add("2");
        sArr.Add("3");
        sArr.Add("4");
        sArr.Add("5");
        Session["Array"] = sArr;

        ArrayList sRarr = new ArrayList();
        string ssMsg = "";
        sRarr = (ArrayList)Session["Array"];
        ssMsg = sRarr[3].ToString();
        Response.Write("<script>window.alert('" + ssMsg + "')</script>");
    }

 

c:使用Session驗證用戶登錄

if (txtName.Text == "mr" && txtPassword.Text == "mrsoft")
{
Session["UserName"] = txtName.Text.Trim();
Response.Redirect("a.aspx");
}

Session對象默認失效期為20分鍾,用戶也可以在Web.Config中對其進行設置。

在用session的時候讓我想到我用過的viewdata,我感覺這兩個都能起到傳值的作用。

MVC中的弱類型,主要有ViewData和TempData
實則上應該都是字典,用於鍵值對應關系,分別對應ViewDataDictionary以及TempDataDictionary。
ViewData只能在當前的HTTP請求中,不會像session一樣可以把數據帶到下一個HTTP請求。
TempData跟ViewData的區別是他是臨時性的,例如取代一些viewstatus一樣保存客戶端的上一次數據。他的內部是通過session來保存的。只要被取用一次后就自動清除session。

...待續!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM