详解ASP.NET中Session的用法(2)

当然你也可以设置一个大于默认设置的超时值,Session.Timeout 属性决定超时值。你还可以通过 Session 对象的 Abandon 方法显式结束一个会话。例如,在表格中提供一个“退出”按钮,将按钮的 ACTION 参数设置为包含下列命令的 .asp 文件的 URL。 

< % Session.Abandon %>

(二)Session的用法:

一、使用Session设定权限
Session简介:
简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串。
-Session的初次使用

protected void Page_Load(object sender, EventArgs e) {//这是页面的初始化 if (!Page.IsPostBack) {//判断是否为初次执行 if (Object.Equals(Session["AdminName"], null)) {//判断在Session["AdminName"]是否存在值 Response.Redirect("ErrorPage.aspx", true); } else {//要是存在则记录下这个人的用户名 Name.Text = Session["AdminName"].ToString(); } } }

二、进行页面传值

在页面之间传递信息有许多方式:
第一:可以使用QueryString
第二:可以使用Session
第三:Server.Transfer
这三种传值方式都有利有弊,下面我以我的经验给大家讲解一下
首先:QueryString
QueryString是一种非常简单的传值方式,其缺点就是会把要传递的值显示在浏览器的地址栏中,并且此方法不能够传递对象。如果你想传递一个安全性不是那么重要或者是一个简单的数值时。使用此方式最好不过。
下面通过一个小例子来说明一下
1.创建一个Web页面,叫SendMessage.aspx
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,与一个Button,叫Submit

protected void Submit_Click(object sender, EventArgs e) { String Url = "ReceiveMessage.aspx?Name=" + TxtName.Text + "&Email=" + TxtEmail.Text; Response.Redirect(Url); }

3.再创建一个接收信息页面,叫ReceiveMessage.aspx
4.在页面内添加两个Label,叫LbName,LbEmail

protected void Page_Load(object sender, EventArgs e) {//使用Request来接收由上个页面传递过来的值,分别显示在页面上 LbName.Text = Request.QueryString["Name"]; LbEmail.Text = Request.QueryString["Email"]; }

-再次:使用Session变量
使用Session变量传值是一种最常见的方式了,此种方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值Remove后,才消失
下面举例说明
1.创建一个页面,叫SendSession
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit

protected void Submit_Click(object sender, EventArgs e) {//可以使用Session的Add方法 Session["Name"] = TxtName.Text; //可以使用Session.Add("Name",TxtName.Text); Session["Email"] = TxtEmail.Text; //可以使用Session.Add("Email",TxtEmail.Text); Response.Redirect("ReceiveMessage.aspx"); }

3.再创建一个页面,叫ReceiveMessage.aspx
4.在页面内添加两个Label,叫LbName,LbEmail

protected void Page_Load(object sender, EventArgs e) { LbName.Text = Session["Name"].ToString(); LbEmail.Text = Session["Email"].ToString(); Session["Name"].Remove(); Session["Email"].Remove(); //使用结束要清除Session中的值 }

这是使用Session传递数值,此方式耗费服务器的资源,尽量少使用
-再次:使用Server.Transfer
这种传递方式有点复杂,但也可以是一种值传递方式
下面举例说明一下:
1.创建一个页面,叫SendMessage.aspx
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit

protected void Submit_Click(object sender, EventArgs e) { Server.Transfer("ReceiveMessage.aspx"); } //再添加一个属性 public String Name { Get { return TxtName.Text; } } public String Email { Get { return TxtEmail.Text; } }

3.再创建一个页面,叫ReceiveMessage.aspx
4.在页面放两个Label,叫LbName,LbEmail

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwwwx.html