TOC

This article is currently in the process of being translated into Vietnamese (~99% done).

State:

Sessions

Session được dùng để lưu dữ liệu phức tạp từ người dùng giống cookie. Thực tế, session dùng cookies để lưu dữ liệu trừ khi bạn không muốn. Session có thể được dùng trong ASP.NET với đối tượng Session. Chúng ta sẽ dùng lại ví dụ cookie. Nhớ là session sẽ hết hạn sau một vài phút như trong tệp web.config. Code như sau:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Sessions</title>
</head>
<body runat="server" id="BodyTag">
    <form id="form1" runat="server">
    <asp:DropDownList runat="server" id="ColorSelector" autopostback="true" onselectedindexchanged="ColorSelector_IndexChanged">
        <asp:ListItem value="White" selected="True">Select color...</asp:ListItem>
        <asp:ListItem value="Red">Red</asp:ListItem>
        <asp:ListItem value="Green">Green</asp:ListItem>
        <asp:ListItem value="Blue">Blue</asp:ListItem>
    </asp:DropDownList>
    </form>
</body>
</html>

Và đây là CodeBehind:

using System;
using System.Data;
using System.Web;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(Session["BackgroundColor"] != null)
        {
            ColorSelector.SelectedValue = Session["BackgroundColor"].ToString();
            BodyTag.Style["background-color"] = ColorSelector.SelectedValue;
        }
    }

    protected void ColorSelector_IndexChanged(object sender, EventArgs e)
    {
        BodyTag.Style["background-color"] = ColorSelector.SelectedValue;
        Session["BackgroundColor"] = ColorSelector.SelectedValue;
    }
}

Như bạn thấy, ví dụ không cần quá nhiều thay đổi để dùng session thay vì cookie. Chú ý rằng giá trị session liên quan tới trình duyệt. Nếu bạn đóng trình duyệt thì giá trị lưu trữ sẽ "mất".

Cũng như vậy, nếu webserver chạy lại tiến trình aspnet_wp.exe thì session sẽ mất đi vì chúng cũng được lưu trong bộ nhớ. Ta có thể tránh bằng cách lưu trạng thái của session bằng StateServer hay lưu trong SQL server nhưng nó không phải là phạm vi của bài này.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!