程序中保存状态的方式之ViewState
程序中保存状态的方式有以下几种:
1、Application 2、Cookie 3、Session
4、ViewState:ViewState是保存状态的方式之一,ViewState实际就是一个Hidden字段,但是它是服务器控件状态保存的基础如下代码
<form method="post" action="./pay.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJODIzOTMwMDc3ZGTbIE1Qcr6O1MaNJf5bvD8Tp0AKJJg+NyIEBAajmcsw1g==" />
</div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="5202EDA5" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAZXxRmso2FJZVL8LCmbbTgwoTATQtF3V7tpU4YYc7cSY5Q9qbaazGdyvfKTQztyQsoEK/deKjVeubuclCDQacXyqVnJ9g9La52g6r1ve+rc/JOs/XAYrHuElaDr6LBkOxGa3O7hMB7G//QtMFx5OwoF4J8cn3f8fns8a+xdJYVbcg==" />
</div>
</form>
这就是一段ViewState保存的页面代码,为了处理页面上复杂的功能,常常会加很多hidden,然后后台服务器端在通过id根据接收到的值来判断页面的状态。
类似这种就可以用ViewState方式实现。ViewState是一种比较好的保存数据方式。
ViewState赋值:ViewState["id"] = '123';
ViewState取值:string bbid = ViewState["id"].ToString();
ViewState和session的不同之处
(1) session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到viewstate里面. 而sesson则只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上.
(2) session在默认情况下20分钟就过期,而viewstate则永远不会过期.
但viewstate并不是能存储所有的.net类型数据,它仅仅支持String、Integer、Boolean、Array、ArrayList、Hashtable 以及自定义的一些类型.
ViewState的优点:存放在客户端会减轻服务器的负担。
建议不要存放比较机密的信息,因为ViewState要保存在客户端,天生就有安全性的隐患。
如有什么地方讲的不正确,请指正谢谢!
程序中保存状态的方式之ViewState的更多相关文章
- 程序中保存状态的方式之Cookies
程序中保存状态的方式之 Cookies,之前写过一篇关于ViewState的.现在继续总结Cookies方式的 新建的测试页面login <%@ Page Language="C#&q ...
- 在C 函数中保存状态:registry、reference和upvalues
在C函数中保存状态:registry.reference和upvalues C函数能够通过堆栈来和Lua交换数据,但有时候C函数须要在函数体的作用域之外保存某些Lua数据.那么我们想到全局变 ...
- 在 DotNetCore 3.0 程序中使用通用协议方式启动文件关联应用
问题描述 在传统的基于 .NET Framework 的 WPF 程序中,我们可以使用如下代码段启动相关的默认应用: # 启动默认文本编辑器打开 helloworld.txt Process.Star ...
- 在c中保存状态
1. 注册表 注册表是一个普通的table,我们可以将c函数中需要保存的状态都存储在注册表中,注册表是可以被多个c模块共享的. 由于注册表是一个普通table,我们同样可以在栈中对其进行操作,只是这个 ...
- 在C函数中保存状态:registry、reference和upvalues
C函数可以通过堆栈来和Lua交换数据,但有时候C函数需要在函数体的作用域之外保存某些Lua数据,那么我们想到全局变量或static变量,这样做的缺点是:(1)为Lua设计C函数库时,导致不可重入:(2 ...
- Spring MVC不要在@Service bean中保存状态
先看这么一段代码: @Service public class AccountService { private String message; public void foo1() { if (tr ...
- LUA 在C函数中保存状态:registry、reference
1 背景 lua的值一般都是保存在栈里面,调用函数完毕值在栈会被清掉,从而被GC回收.但有时候C函数需要在函数体的作用域之外保存某些Lua数据,这些数据不能存放在栈里面,有没有全局变量之类的可以存放. ...
- (11)Web程序保存状态的几种方式,Application,Session,Cookie,ViewState
WEb程序保存状态的方式有这样几种: 1.Application:保存在Application中的数据是全局有效的:Application里面存放的应该是访问多修 改较少并且是全局至少大部分 ...
- 向Hive中传入变量的方式
Hive向程序中传递变量的方式 暴力替换 字符串替换 正则替换 模板引擎 系统环境变量 shell环境变量:${env:varname} system系统变量:${system:varname} hi ...
随机推荐
- SQL Server performance tips
Refer to: http://harriyott.com/2006/01/sql-server-performance-tips A colleague of mine has been look ...
- extentreports报告插件之extentX之服务搭建(三)
之前两个章节已经写完再extentreports报告插件与testng 的集成,但是发现 每次测试完后,生成的报告都要在单独发送,每个项目都有一份报告,如果项目多的话,管理起来就会很冗余. 这个给大家 ...
- qt环境下Mapx组建的编程---------regoin
#include "widget.h" #include "ui_widget.h" #include <QPushButton> #include ...
- Linux系统启动级别及顺序
Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多 ...
- CA签发工具
#!/bin/bash #author Sun Ying #date:2015-12-17 if [ $# -lt 1 ];then echo -e "\033[34mUsage: `bas ...
- 用systemd脚本自动启动node js程序
vi /usr/lib/systemd/system/pano.service [Unit] Description=pano - main site of site_name.com Documen ...
- 自己用C语言写PIC32 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 从15年12月份以来我 ...
- 标识符,unicode和GBK
标识符Identifier 作用: —给变量,类,和方法命名 Java标识符有如下命名规则: —标识符必须以字母,下划线,美元符开头. —标识符其他部分可以是字母,下划线,美元符和数字的任意组合. — ...
- 泛型(Generic)
本质:限制集合类型 我们在编写泛化类的时候,我们要时刻提醒自己,我们传入的参数T仅仅是一个Object类型,任何具体类型信息我们都是未知的. 小例子: package day02.generic; i ...
- css之页面两列布局
两列布局:左边固定,后边自适应 第一种方法:左边的div左浮动或者是绝对定位,右边的div加margin-left:左边div的宽度 html部分 <div class="left&q ...