ASP.NET 之四大常用状态(信息)保持方式

ASP.NET中状态(信息)保持方案有如下几种:

客户端的状态信息保持本质上来说有3种:隐藏域/Cookies /Querystring(URL传参)

服务器端: Session(会话)/ Application/ Caching(缓存)/DataBase(数据库)

常用的四大状态(信息)保持方式为:ViewState 、 Cookie [服务器端];Session、Application [服务器端]

ViewState(页面级):

使用ViewState的前提:页面上必须有一个服务器端窗体标记(<form runat=“server”>)

保存的数据只有在当前页面不关闭的情况下才能够使用

ASP.NET 的 .aspx页面特有,页面级的;就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式

服务器端控件(除那些在查看看源文件以表单标签存在的[如:文本框,按钮等])的值大多都会自动保存在ViewState中

非单值服务器控件的状态也自动保存在ViewState中

存储的值得类型为object类型 (必须可以进行序列化)

使用方式

用户数据保存方式示例: 当点击submit按钮的时候 页面数字依次刷新

aspx:

    <form id="form1" runat="server">
    <div>
        <input id="Submit" type="submit" value="submit" />
    </div>
    </form>

aspx.cs:

复制代码
 1         int num = 0;
 2         if (!IsPostBack)
 3         {
 4             ViewState["num"] = num;
 5         }
 6         else
 7         {
 8             num = int.Parse(ViewState["num"].ToString());
 9             num++;
10             ViewState["num"] = num;
11         }
12         Response.Write(num);
复制代码

通过查看原源可以看到如下代码:

复制代码
1  <form method="post" action="Viewstate.aspx" id="form1">
2 <div class="aspNetHidden">
3 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTEzNDM3NzkxOQ8WAh4DbnVtAg1kZFjP0kir7oNa1uhkqdxh/XYVmMmQtWmVm8yOjozghxWo" />
4 </div>
5 
6     <div>
7         <input id="Submit" type="submit" value="submit" />
8     </div>
复制代码

对比编译时的代码此代码段多出了一个隐藏域,正是这个隐藏域的value 记录了上一次的数据使得每次点击submit按钮数据得以依次增加

通过工具可以查看到隐藏域value存储的信息如下图:

隐藏域value的值到底是怎嘛来的呢? 它是由viewstate对象序列化后经过Base64编码后形成的 。 读取时浏览器对value进行反编译然后反序列化最后输出。这个过程是自动进行的

应用: 大多是一些小页面。比较大的页面一般不会使用它(如:淘宝)

禁用ViewState的方法,禁用单个控件的ViewState设定enableviewstate=false,禁用ViewState以后TextBox版本不受影响,Div版本受影响,因为input的value不依靠ViewState。

禁用整个页面的,在aspx的Page指令区加上EnableViewState="false" 。内网系统、互联网的后台可以尽情的用ViewState。
WebForm的IsPostBack依赖于__ViewState

Cookie:

Cookie是一种能够让网站服务器把少量数据(4kb左右)储存到客户端的硬盘(设置了过期时间)或内存(不设置过期时间),并且读取出来的一种技术。

浏览器访问一个站点时,只将属于当前站点的Cookie发过到服务器。(根据域名)—(没必要把每家医院的病历本都带过去。)

Cookie不兼容浏览器!(不同浏览器不共享Cookie文件数据)

服务器端语言和客户端语言都可以操作

cookie的读和写都是浏览器做的

存储的数据类型为字符串

使用示例:

写:

1         HttpCookie hc = new HttpCookie("test", "My is test");
2         // 设cookie的过期时间。
3         hc.Expires = DateTime.Now.AddDays(7);
4         Response.Cookies.Add(hc);

读:

1         HttpCookie hc = Request.Cookies["test"];
2         if (hc!= null)
3         {
4             Response.Write(hc.Value);
5         }

如果服务器两次输出同一名称的cookie则相当于对cookie重新赋值

* 服务器向浏览器写出Cookie实际上就是在 响应报文中 生成响应行:

* Set-Cookie: uinfo2=123; expires=Mon, 06-Jun-2011 06:48:47 GMT; path=/

* 浏览器读取此 响应行后 会自动在客户端硬盘中产生一个Cookie文件,名为:

* Cookie:administrator@localhost/,注意@后的 localhoust/ ,实际上是颁发此Cookie网站的域名;

* 当浏览器下次再访问此域名时,就会自动将 后缀为 localhoust/ 的cookie文件内容发送到服务器

cookie的删除 : 服务器是不能直接的去删除浏览器上的cookie的,但是可以过设置cookie的过期时间来删除cookie(将过期时间设为-1)

cookie. Path(为指定的文件夹生成Cookie)

cookie.Domain (域/域名)

Cookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新到硬盘,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以。

哪怕请求jpg、js、css这种文件也会带着Cookie,因为服务器端可能要进行Session的操作,比如判断是否登录。互联网优化的案例:图片服务器和主站域名不一样,降低Cookie流量的传输

Session:常用于保存登录用户ID、验证码

不同的浏览器不能共用session 因为不同的浏览器保存的sessionid(可以通过工具监视响应报文看到)不同
存储的数据只为某个客户端服务 ,并且能被网站的所有页面访问 跟cookie类似
Session只可由该会话的用户访问(因为SessionId的东东以cookie的方式保存访问者浏览器的缓存里了)

当会话过期或终止时,服务器就会清除 Session 对象

任何一个类在使用session的时候 都要告诉类要使用session,一般应用程序默认情况下不会还原session

一般应用程序在使用的时候 需添加:using System.Web.SessionState并实现IRequiresSessionState接口而aspx.cs、aspx则不需要,因为aspx.cs

系统在默认情况下已经实现了IRequiresSessionState接口(可以通过反编译工具看到), aspx原本就是继承与aspx.cs的所以它也就间接的实现了IRequiresSessionState接口

如果浏览器禁用了Cookie可以启用Url来传递SessionID。

开始并为Session赋值(存储的数据为object类型):

 Session[“uName”]=“name”;

取值:

string strName = Session["uName"].ToString();

销毁(取消/退出):

Session.Abandon();//销毁服务器端的Session对象
Session.Clear();//清空服务端的Session对象里的键值对,Session对象并没有从Session池里销毁

Session常用属性、方法

属性

描述

SessionID

唯一用户会话标识符

TimeOut

用户超时(单位:分钟),默认20分钟

Count

会话状态集合中的项目数

方法

描述

Abandon方法

用于显式结束会话。


Application :

在服务器端保存共享数据的一种方式

但每次只能有一个访问者访问

使用示例:

复制代码
        // 写入: 
        // 锁定
        Application.Lock();
        // 存入数据
        Application["num"] = 0;
        // 解锁
        Application.UnLock();
        // 读取:
        Response.Write(Application["num"].ToString());
复制代码

多用于全局应用程序类中来记录数据 例如:记录当前网站的同时是在线人数(不准确的)

版权所有:jory
【ASP.NET】第三课——ASP.NET 系统对象与状态管理 知识点:理解ASP.NET系统对象的概念、掌握ASP.NET状态管理技术、掌握Page对象的IsPostBack属性和ClientScript属性、掌握Response、Request、Server、Cookie、Session、Application对象的使用方法、理解状态管理技术之间的区别。 在【ASP.NET】第二课——ASP.NET WebForm中的控件,我们已经认识了 ASP.NET 的控件,重点讲解了常用的 Web 服务器控件。 本次课将学习 ASP.... 阅读详情

相关推荐

告别黑盒:深入解析西部数据UFS芯片的44个SMART健康参数(附高通XBL读取源码)

本文深入解析西部数据UFS芯片的44个SMART健康参数,结合高通XBL启动加载层源码,提供了一套完整的健康状态诊断方法论。从SCSI命令层封装到数据结构映射,详细介绍了如何在高通平台早期启动阶段捕获UFS健康状态,帮助工程师实现预测性维护。

weixin_30600197的博客 427

ASP.NET状态保存

ASP.NET状态保存分为客户端保存和服务器端保存两种:   使用客户端选项存储页信息而不使用服务器资源的这些选项往往具有最低的安全性但具有最快 的服务器性能,因为对服务器资源的要求是适度的。但是,由于必须将信息发送到客户端来进行存储,因此对于以这种方式可以存储多少信息存在一定的客观限制。 bitsCN.com中国网管联盟 客户端保存的方式一般有如下4种:     1     Vie...

weixin_34326429的博客 201

Spark on Yarn 高可用模式部署流程

本文介绍了如何配置Spark和Yarn的高可用(HA)环境,以确保在大规模数据处理中避免单点故障。

xhaoDream的博客 1448

ASP.NET保持用户状态的九种选择

2003-06-10■陶刚编译■yesky摘要:ASP.NET为保持用户请求之间的数据提供了多种不同的途径。你可以使用Application对象、cookie、hidden fields、Sessions或Cache对象,以及它们的大量的方法。决定什么时候使用它们有时很困难。本文将介绍了上述的技术,给出了什么时候使用它们的一些指导。尽管这些技术中有些在传统ASP中已经存在,但是有了.NET框架组件

深度Java 5368

使用Java实现CRC16 MODBUS 格式校验

CRC16校验,测试如下 String str = "a5 98 03 00 00 5f c6 0f 7c 40 78 06 09 46 dc 6e db 00 16 3e 12 5c 98 00 19 98 0e 10 03 06 09 46 dc 6e db 03 0b bf 5f c6 0f 7c 43 bd b9 61 ee 96 76 99"; 校验规则: /** * CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结

weixin_45063710的博客 1316

Yolov26 在 Rk3588 上的 Rknn Onnx 部署实践(c++)

本文介绍了YOLOv26在RK3588平台的C++推理部署方案。重点包括:1)扩展Ultralytics导出格式,新增RKNN_ONNX专用导出选项;2)重构Detect Head结构,使其更适合RKNN推理;3)提供C++侧后处理实现建议。该方案保留了Ultralytics训练生态,通过优化模型结构输出,将解码等操作移至C++端,充分发挥Rockchip NPU性能。适用于RK3588/RK356x等平台,需配合rknn-toolkit2使用,为YOLOv26的嵌入式部署提供完整解决方案。

qq_64366203的博客 2178

一个服务器控件能自动保存/加载ASP.NET控件集 原著:Vishal Shukla

俺也不知道怎么翻译好,意思就是说将一些常见的服务器控件如:TEXTBOX,RADIOBUTTON,DROPDOWNLIST,CHECKBOX等控件放入该服务器控件模版内,就能在提交的时候记录这些控件的信息,一般都是用户的搜索条件,如果用户从当前页转到其他页,再转回来时,那些控件上的信息依然保留,用这个控件比较方便,代码改动量非常小,如果想要实现更多的控件信息能保存你需要对该服务器控件做简单的扩展.

xdpost的专栏 664

大话西游2单机版V8一键架设教程:5分钟搞定GM权限和仙玉修改(附完整物品代码表)

本文详细讲解了大话西游2单机版V8的一键架设教程,包括5分钟快速配置GM权限、仙玉修改及物品代码使用技巧。通过分步指导和服务端配置详解,帮助玩家轻松掌握游戏管理功能,重温经典回合制体验。附完整物品代码表,助你快速获取稀有道具和神兽。

weixin_42557830的博客 1238

ASP.NET的隐藏功能[关闭]

This question exists because it has historical significance, but it is not considered a good, on-

w36680130的博客 517

计组实验4 控制冒险与分支预测

目录前言实验内容背景知识分支预测技术⭐阻塞周期计算方法不开启 BTB开启 BTBpart 1 矩阵乘法与优化未开启 BTB 的分析开启 BTB 的分析part 2 设计代码使 BTB 无效part 3 循环展开优化矩阵乘法未开启 BTB开启 BTB结束语结论 前言 上一篇博客:计组实验3 mips冒险之流水线冒险 摸了半个月了。。。咕咕咕 今天来写计组实验 4 这个实验非常简单,就是有点难。 这个实验比较容易算错,或者是被模拟器出人意料的结果搞的神神叨叨的,所以今天来记录并且详细分析该实验。 注:请务必阅

AKGWSB 's blog 5669

2026年数字IC设计华为笔试带答案解析

这篇文章是一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含单选题31题(每题2分)、多选题10题(每题4分)和简答/编程题4题(每题7分),总分130分,考试时长120分钟。 摘要重点: 试卷涵盖数字IC设计的关键知识点,包括Verilog语法、时序逻辑、状态机设计、跨时钟域处理等; 题目解析详细说明了各选项的正确性,如非阻塞赋值特性(D错误)、功耗影响因素(C与组合逻辑级数弱相关)等; 包含实际工程问题,如DDR4接口电平(SSTL-1.2)、卡诺图变量排序(格雷码)等; 部分题目考察基础概念

Open 375

ASP.NET基础教程-隐藏域的使用

Hidden控件是属于HTML类型的服务器控件,使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大的区别,只是它不会在用户端的浏览器中显示,如终处于隐藏状态。但是每次页面提交的时候,此控件和其他服务器控件一同提交到服务器端,因此服务器端可以使用Value属性获取或保存数据信息。使用Hidden控件保存和读取信息的代码如下。 //存放信息Hidden...

weixin_33752045的博客 312

打通ZYNQ的任督二脉:AXI_FIFO数据交互全解析

FIFO(First In First Out,先进先出)是一种经典的数据缓冲结构,就像排队买票一样,先来的人先得到服务。时钟域交叉(CDC):连接不同时钟频率的模块数据缓冲:平衡生产者和消费者的速度差异流量控制:防止数据丢失或溢出input clk,// 输入AXI4-Stream接口(从PS到PL)// 输出AXI4-Stream接口(从PL到PS)// 状态指示信号// 定义状态机状态// 数据缓存// 8个深度的缓存// 流水线处理寄存器。

QQ_778132974的博客 308

[ASP.NET]常用的状态(信息)保持方式

常用的状态(信息)保持方式

Stephanie翟倩 502

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ASP.NET中Session的状态保持方式

ASP.NET提供了Session对象,从而允许程序员识别、存储和处理同一个浏览器对象对服务器上某个特定网络应用程序的若干次请求的上下文信息。Session对应浏览器与服务器的同一次对话,在浏览器第一请求网络应用程序的某个页面时,服务器会触发Session_onStart事件;在对话超时或者被关闭的时候会触发Session_onEnd 事件。程序员可以在代码中响应这两个事件来处理与同一次对话相关的

麦兜猴的专栏 5103

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ASP.NET中Session的状态保持

 ASP.net提供了Session对象,从而允许程序员识别、存储和处理同一个浏览器对象对服务器上某个特定网络应用程序的若干次请求的上下文信息。Session对应浏览器与服务器的同一次对话,在浏览器第一请求网络应用程序的某个页面时,服务器会触发Session_onStart事件;在对话超时或者被关闭的时候会触发Session_onEnd 事件。程序员可以在代码中响应这两个事件来处理与同一次对话相关

w5762的专栏 695

ASP.Net中的四种状态保持机制

这几天在学ASP.Net (就是传说中最难的东西)  上课刚听的时候的确有点听不懂 毕竟第一次接触 每天晚上回来看视频的时候 才慢慢的恍然大悟 哦~~ 原来是这么回事呀 想必大牛们当初也是这样的感觉吧 哈哈 ! 今天来说说ASP.Net中的4种状态保持机制 状态保持机制?神马意思? 别急 且听我下面慢慢道来 每个人上网可多有过这样的情况   当我们登陆某个网站时 在登陆的旁边会有一个

popping_dancer的专栏 4645

ASP.NET 中Session的状态保持方式

ASP.NET提供了Session对象,从而允许程序员识别、存储和处理同一个浏览器对象对服务器上某个特定网络应用程序的若干次请求的上下文信息。Session对应浏览器与服务器的同一次对话,在浏览器第一请求网络应用程序的某个页面时,服务器会触发Session_onStart事件;在对话超时或者被关闭的时候会触发Session_onEnd 事件。程序员可以在代码中响应这两个事件来处理与同一次对话相关的

寒冬玉 557

asp.net集群中保持session状态

ASP.NET提供了Session对象,从而允许程序员识别、存储和处理同一个浏览器对象对服务器上某个特定网络应用程序的若干次请求的上下文信息。Session对应浏览器与服务器的同一次对话,在浏览器第一请求网络应用程序的某个页面时,服务器会触发Session_onStart事件;在对话超时或者被关闭的时候会触发Session_onEnd 事件。程序员可以在代码中响应这两个事件来处理与同一次...

dely96002的博客 176

ASP.NET状态保持cookie与session

ASP.Net状态保持 一、ASP.Net中的状态保持如下图: 二、客户端的状态保持方案 ViewState、隐藏域、Cookies、控件状态、URL查询参数 ->ViewState(页面级) 有两种使用方式: 1、用户数据...

weixin_30654583的博客 213

常用的状态(信息)保持方式(重点)

记住:HTTP是无状态的。   1、ViewState: ASP.NET 的 .aspx页面特有,页面级的; 就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式; 服务器端控件的值都自动保存在ViewState中;   2、Cookie: HTTP协议下的一种方式,通过该方式,服务器或脚本能够在客户机上维护状态信息;        就是在客户端保存客户端

假装狠牛逼 2424

【ASP.NET】ViewState、Cookie、Session 状态保持机制

什么是状态保持机制? 大家可以跟我一起回忆: 用优快云来举例: 当我们第一次登陆优快云的时候,登陆界面会有一个复选框让我们勾选“记住密码”,这样我们在勾选之后再下次重新打开这个页面的时候电脑就会记录我们的用户和密码,其实这个用的就是Cookie机制, 在我们登陆进网站的时候,无论我们点击该网站的哪个分页面,我们的信息都会一直保持,这里就用到了Ses...

立志欲坚不欲锐,成功在久不在速度 687
上一篇: C#中窗体屏蔽键盘按键
下一篇: SAP软件ERP系统简介
devgis
博客等级 码龄16年 52粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值