ASP.NET——Session会话对象实现多页面数据交互

ASP.NET——Session会话对象实现多页面数据交互

1.ViewState只能保存当面页面的数据,而Session可实现不同页面间数据的共享

2.使用时依旧跟ViewState一样采用键-值对方式

3.Session 保存的是临时数据,一旦网页关闭,Session亦会被清空

ASP.NET——Session会话对象实现多页面数据交互
ASP.NET——Session会话对象实现多页面数据交互
ASP.NET——Session会话对象实现多页面数据交互
ASP.NET——Session会话对象实现多页面数据交互

案例代码

代码结构:设置Default4.aspx为启动页面

ASP.NET——Session会话对象实现多页面数据交互

Default4.aspx的前端代码:

namespace ASP.NET_Demo2.Demo04
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List<string> cart = new List<string>();
                Session["Cart"] = cart;
            }
            if (Session["CurrentUser"] != null)
            {
                this.ltaMsg.Text = "欢迎您:" + Session["CurrentUser"].ToString();
            }
            else
            {
                this.ltaMsg.Text = "您还没有登录!";
            }

        }
        //添加到购物车
        protected void btnAddToCart_Click(object sender, EventArgs e)
        {           
            //首先判断用户是否登录
            if (Session["CurrentUser"] == null)
            {
                Response.Redirect("UserLogin.aspx");
            }
            else
            {
                foreach (Control item in form1.Controls)
                {
                    if (item is CheckBox)
                    {
                        CheckBox ckb = (CheckBox)item;
                        if (ckb.Checked)
                        {
                            ((List<string>)Session["Cart"]).Add(ckb.Text);
                        }
                    }
                }
                this.btnAddToCart.Text = "添加成功!";
            }
          
        }
        //显示购物车
        protected void btnShowCart_Click(object sender, EventArgs e)
        {
            Response.Redirect("ShoppingCart.aspx");
        }

        protected void btnExit_Click(object sender, EventArgs e)
        {
            Session.Abandon();//清除Session
            this.ltaMsg.Text = "您还没有登录!";
        }

    }
}

Default4.aspx的后台代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<string> cart = new List<string>();
        Session["Cart"] = cart;
    }
    if (Session["CurrentUser"] != null)
    {
        this.ltaMsg.Text = "欢迎您:" + Session["CurrentUser"].ToString();
    }
    else
    {
        this.ltaMsg.Text = "您还没有登录!";
    }

}
//添加到购物车
protected void btnAddToCart_Click(object sender, EventArgs e)
{           
    //首先判断用户是否登录
    if (Session["CurrentUser"] == null)
    {
        Response.Redirect("UserLogin.aspx");
    }
    else
    {
        foreach (Control item in form1.Controls)
        {
            if (item is CheckBox)
            {
                CheckBox ckb = (CheckBox)item;
                if (ckb.Checked)
                {
                    ((List<string>)Session["Cart"]).Add(ckb.Text);
                }
            }
        }
        this.btnAddToCart.Text = "添加成功!";
    }
  
}
//显示购物车
protected void btnShowCart_Click(object sender, EventArgs e)
{
    Response.Redirect("ShoppingCart.aspx");
}

protected void btnExit_Click(object sender, EventArgs e)
{
    Session.Abandon();//清除Session
    this.ltaMsg.Text = "您还没有登录!";
}

ShoppingCart的后台代码,前台代码为空

protected void Page_Load(object sender, EventArgs e)
{
    //取出对象集合,遍历后显示
    List<string> cart = (List<string>)Session["Cart"];
    string info = string.Empty;
    foreach (string item in cart)
    {
        info += item + "    ";
    }
    Response.Write("您选的商品为:" + info + "<br><br>");
    Response.Write("您的SessionID=" + Session.SessionID);
}

UserLogin的前端代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserLogin.aspx.cs" Inherits="ASP.NET_Demo2.Demo04.UserLogin" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <table>
            <tr>
                <th colspan="2">
                    用户登录
                </th>
            </tr>
            <tr>
                <td>
                    用户名:
                </td>
                <td>
                    <asp:TextBox ID="txtUserName" runat="server" Width="150px"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    密&nbsp; 码:
                </td>
                <td>
                    <asp:TextBox ID="txtPwd" runat="server" TextMode="Password" Width="150px"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="right">
                    <asp:Literal ID="lInfo" runat="server"></asp:Literal>
                    &nbsp;<asp:Button ID="btnLogin" runat="server" Text="登录" OnClick="btnLogin_Click" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

UserLogin的后台代码:

protected void btnLogin_Click(object sender, EventArgs e)
{
    //验证信息

    //查询用户信息,验证用户名和密码是否正确
    if (this.txtUserName.Text.Trim() == "xiaowang" && this.txtPwd.Text.Trim() == "12345")
    {
        //保存用户登录信息
        Session["CurrentUser"] = this.txtUserName.Text.Trim();
        //登录成功后跳转到首页
        Response.Redirect("Default.aspx");
    }
    else
    {
        this.lInfo.Text = "用户名或密码错误!";
    }
}