viewstate控件(asp.net的ViewState到底起什么作用)

:暂无数据 2026-07-04 10:00:09 :0

viewstate控件(asp.net的ViewState到底起什么作用)

“viewstate控件”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看viewstate控件(asp.net的ViewState到底起什么作用)!

本文目录

asp.net的ViewState到底起什么作用

ASP.NET中的ViewState
ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值。
ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能。它的类型是system.Web.UI.StateBag,一个名称/值的对象集合。
当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。当然这些全部是由ASP.NET负责的.
希望我的回答令您满意!谢谢

Edge浏览器标签用的什么控件_edge浏览器标签页设置

从服务器角度来说,HTML标签,最容易,最不消耗资源。客户端能直接使用。

HTML服务器控件,和ASP.NET服务器控件其实是一样的远离都是服务器端的运行程序,消耗服务器资源,然后转化成客户端可以直接识别的程序。再由客户端读取,这样实际上是两道工序,所以麻烦。

从客户端角度来说

HTML标签同样是最吧靠资源的。

而HTML服务器空间和ASP.NET服务器控件由于会产生页面视图,所以同样会消耗资源

从某个角度上讲ASP.NET服务器控件是HTML服务器控件的升级版,如果过你没太多需要使用HTML服务器控件肯定占资源少,详细看下面。

WEB服务器控件是HTML控件的一种扩展,区别是:

1)前者可以触发服务器控件特有的事件,后者只能通过回递的方式触发服务器上的页面级事件。

2)输入到前者中的数据在请求之间可以维护(即具有状态管理功能),而后者无法自动维护数据,只能使用页面级的脚本来保存和恢复。

3)前者可以自动检测浏览器并调整到恰当的显示,而后者没有自动适应功能,必须在代码中手动检测浏览器。

4)每个服务器控件都具有一组属性,可以在服务器端的代码中更改控件的外观和行为,而后者只有HTML属性。

如果某些控件不需要服务器端的事件或状态管理功能时,可以选择HTML控件,这样可以提高应用程序的性能。

asp. net程序出错的原因有哪些呢

一、网络上的一般说法
1、ViewState 对象为Null。
2、DateSet 空。
3、sql语句或Datebase的原因导致DataReader空。
4、声明字符串变量时未赋空值就应用变量。
5、未用new初始化对象。
6、Session对象为空。
7、对控件赋文本值时,值不存在。
8、使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值。
9、使用FindControl时,控件不存在却没有做预处理。
10、重复定义造成未将对象引用设置到对象的实例错误.

二、 (1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现.
  (2)控件名称与codebehind里面的没有对应
  (3)未用new初始化对象
  (4)在程序中所引用的控件不存在
  解决方法:
  (1)使用try..catch...finally捕捉错误,或直接用response.write()输出所取的变量值
  (2)查看代码中是否存在未初始化的变量

三、SqlConnection.Open 未将对象引用设置到对象的实例
在使用VS2003开发 ASP.NET程序时候 有时候操作 SqlConnection对象的Open()方法时候会出现
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
。。。。
conn.Open();

asp.net服务器控件的视图状态viewstate

首先要明白的是,当你按了类似Button按钮,将页面重新发给服务器后,服务器处理你的页面的过程是:它会重新初始化你第一次请求的那个页面,就是说尽管你第一次请求页面后对这个页面做了许多其他的操作,比如说该页面有让用户随意转换文章字体的功能,你按了个标签使文章字体改变了,之后又有操作按了Button按钮将页面回发给服务器,让它处理你的Button事件,此时服务器重新初始化你的那个页面,该页面只是你第一次请求时的状态(即未改变文章字体的状态),但是为何服务器处理了你的Button事件,将网页回发给你后,文章的字体的确还是你之前自定义的字体呢?不是初始化页面的时候只是回到你第一次请求的状态吗?这就是viewstate的功能。在服务器初始化页面后,它会读取隐藏在你回发的页面中的viewstate,从中读取相应信息,在服务器端将文章字体变为你当初自定义的字体。 你的例子中,当在TextBox中输入文字后,传给服务器,服务器当然还能获得你的输入,唯一不同的是,如果你禁用了视图状态,那么当页面再次发给你的时候,你的TextBox就是空的了。而若没有禁用,当页面再次回发给你的时候,TextBox中仍然保留你上次的输入值。

ASP.NET服务器控件之视图状态

  为Web页面及其控件保持状态信息是非常有必要的 然而 由于Web应用程序创建于HTTP协议的顶层 这是一个无状态的协议 因此 保持状态信息则变得非常困难 为了解决这个问题 技术提供了多种解决方案 例如 利用Session Cookie 视图状态 控件状态 隐藏域 查询字符串 个性化用户配置(Profile)等等 对于利用ASP NET 技术创建服务器控件而言 保持状态信息也是非常重要的 其主要解决途径是利用视图状态和控件状态 本文详细讲解了视图状态(ViewState)的基本知识 并通过典型应用介绍视图状态的应用方法   视图状态概述   视图状态是一项非常重要的技术 它能使得页面和页面中的控件在从服务器到客户端 再从客户端返回的往返过程中保持状态信息 这样就可以在Web这种无状态的环境之上创建一个有状态并持续执行的页面效果 本节主要介绍有关视图状态的运行机制 应用方法 存储的数据类型 性能和安全性 视图状态分块(这是 ASP NET 的新特性)和优缺点等内容   ( )运行机制   视图状态的具体运行过程为 每当用户请求某个 aspx页面时 NET框架首先把相关控件的状态数据序列化成一个字符串 然后 将其做为名为__VIEWSTATE的隐藏域的Value值发送到客户端 如果页面是第一次被请求 那么服务器控件也将是被第一次执行时 名为__VIEWSTATE的隐藏域中只包含控件的默认信息 通常为空或者 null 在随后的回送事件中 ViewState中就保存了服务器控件在前面回送中可用的属性状态 这样服务器控件就可以监视在当前被处理的回送事件发生之前的状态了 这些过程是由 NET框架负责的 对用户来说是执行 aspx页面就有了持续执行的效果   ( )存储的数据类型   视图状态可以存储多种类型的数据 并且为了提高运行效率 视图状态自身还包括一套已经优化的针对常用类型的序列化方式 视图状态序列化方式默认支持的数据类型包括以下几种 String Int Unit Color Array ArrayList HashTable和自定义类型转换器 TypeConverter   视图状态已经为Array ArrayList和包含上面列出类型的HashTable对象进行了优化 因此 当在控件中使用视图状态时 应该试着限定于使用以上简单数据类型 以及经过优化的类型 在此 需要重点说明一下自定义类型转换器 TypeConverter 它提供了一种将值的类型转换为其他类型以及访问标准值和子属性的统一方法 例如 可以利用TypeConverter将字符串转换为数值 或者将数值转换为字符串 如果没有类型转换器 那么页面框架会使用 NET框架提供的二进制序列化功能来序列化对象 这个过程是非常耗费资源的   ( )性能和安全性   使用视图状态时 对象必须先序列化 然后再通过回传进行反序列化 因此 我们必须了解有关ViewState性能的内容 默认情况下 控件的ViewState将被启用 如果不需要使用ViewState 最好还是将它关闭 以下情况将不再需要ViewState ( )控件未定义服务器端事件(这时的控件事件均为客户端事件且不参加回送的) ( )控件没有动态的或数据绑定的属性值 关闭视图状态的方法是将控件的EnableViewState的值设置为 false 即EnableViewState= false   默认情况下 视图状态的有关内容在编译运行发送给客户端时 读者将在页面的HTML代码中看到__VIEWSTATE隐藏域内容 这是一些没有意义的字符串 是 NET框架通过Base 位编码对相关内容编码的结果 它们是通过明文方式在客户端和服务器端之间往返传送 在某些情况下 例如涉及密码 账号 连接字符串等敏感内容时 使用默认方式是很不安全的 为此 NET框架为ViewState提供了两种安全机制   · 校验机制   可以通过设置EnableViewStateMAC= true 属性来指示 NET框架向ViewState数据中追加一个散列码(该散列码是一种 SHA 类型 长度有 位 因此会严重影响执行性能) 在回传事件发生时 将重新建立该散列码 它必须和最初的散列码匹配 通过这种方式 能够有效检验ViewState是否在传送过程中能够被篡改 默认情况下 NET框架使用SHA 算法来生成ViewState散列代码 此外 也可以通过在 nfig文件中设置<machineKey>来选择 MD 算法 如下所示 <machineKey validation= MD /> MD 算法的性能要比SHA 算法好一些 但是同样不够安全   · 加密机制   使用加密来保护ViewState字段中的实际数据值 首先 必须如上所述设置EnableViewStatMAC= true 然后 将 machineKey validation类型设置为 DES 即<machineKey validationKey= AutoGenerate decryptionKey= AutoGenerate validation= DES /> 这指示ASP NET使用 DES加密算法来加密ViewState值   ( )视图状态分块   以上内容介绍了视图状态的一些基本知识 然而 可能部分读者会有些疑惑 如果在某些情况下 视图状态数据变得很大 那怎么办呢?这样显然会出现一些意想不到的后果 为此 ASP NET 新增了一种名为 视图状态分块 的功能 如果视图状态的数据量变得太大 视图状态分块自动将数据分成多个块区 并将这些数据放在多个隐藏形式的字段中   若要启用视图状态分块 可将MaxPageStateFieldLength属性设置为在单个视图状态字段中允许的最大大小(以字节为单位) 当该页回发到服务器时 该页会在页初始化阶段分析视图状态字符串 并还原页中的属性信息 默认设置是 这表示不存在最大大小 不会将视图状态分成多个块区   ( )优点和缺点   使用视图状态具有以下 个优点 一 耗费的服务器资源较少(与 Application Session相比) 因为 视图状态数据都写入了客户端计算机中 二 易于维护 默认情况下 NET系统自动启用对控件状态数据的维护 三 增强的安全功能 视图状态中的值经过哈希计算和压缩 并且针对Unicode实现进行编码 其安全性要高于使用隐藏域   使用视图状态具有以下 个缺点 一 性能注意事项 由于视图状态存储在页本身 因此如果存储较大的值 即使在视图状态分块的情况下 用户显示页和发送页时的速度仍然可能减慢 二 设备限制 移动设备可能没有足够的内存容量来存储大量的视图状态数据 因此 移动设备上的服务器控件时 将使用其他的实现方法 三 潜在的安全风险 视图状态存储在页上的一个或多个隐藏域中 虽然视图状态以哈希格式存储数据 但它可以被篡改 如果直接查看页输出源 可以看到隐藏域中的信息 这导致潜在的安全性问题

lishixinzhi/Article/program/net/201311/13549

如何关闭viewstate

禁用 ViewState
可以针对单个控件、整个页面或整个应用程序禁用 ViewState,如下所示:
每个控件(在标记上):控件属性里面设置viewstate的值为false.
《asp:datagrid EnableViewState="false" ?/》
在设计页面,手动点击一下Repeater区域,然后在属性列表框中设置EnableViewState="false"
每个页面(在指令中):在页面的page指令中设置页面的enableViewState属性为false
《%@ Page EnableViewState="False" ?%》
每个应用程序:(在 web.config 中) 《Pages EnableViewState="false" ?/》

关闭: enableviewstate="false"
《%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" enableviewstate="false" %》
打开: enableviewstate="true"
《%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" enableviewstate="true" %》

ViewState如何保存控件状态

page_load里加入判断:
if(ViewState!=null){
}
把
ViewState.Add("dropdownlist", dropdownlist.selecteditem.value);
改成:
ViewState=dropdownlist.selecteditem.value;
---------------
那我明白了...你干脆这样儿吧..
你现在不是第一个页面跳到第二个页面显示内容后再返回第一个页面么?
你不如让第二个页面以新窗口弹出来.第一个页面不动.不就OK了么.

关于viewstate控件和asp.net的ViewState到底起什么作用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

viewstate控件(asp.net的ViewState到底起什么作用)

本文编辑:admin

更多文章:


form表单制作(为什么制作的form表单会在网页显示中多出一行)

form表单制作(为什么制作的form表单会在网页显示中多出一行)

大家好,如果您还对form表单制作不太了解,没有关系,今天就由本站为大家分享form表单制作的知识,包括为什么制作的form表单会在网页显示中多出一行的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 09:10

teammate(teammate,company,partner)

teammate(teammate,company,partner)

各位老铁们,大家好,今天由我来为大家分享teammate,以及teammate,company,partner的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2026年10月11日 06:10

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

其实javascript arraybuffer的问题并不复杂,但是又很多的朋友都不太了解javascript可以把base64编码转换成二进制代码吗求示例代码!,因此呢,今天小编就来为大家分享javascript arraybuffer的

2026年10月11日 04:00

text函数公式(excel中round和text函数的区别是什么)

text函数公式(excel中round和text函数的区别是什么)

“text函数公式”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看text函数公式(excel中round和text函数的区别是什么)!

2026年10月11日 03:50

pascal编程软件(介绍一下pascal语言!)

pascal编程软件(介绍一下pascal语言!)

大家好,如果您还对pascal编程软件不太了解,没有关系,今天就由本站为大家分享pascal编程软件的知识,包括介绍一下pascal语言!的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 02:40

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

本篇文章给大家谈谈google chrome打不开,以及chrome浏览器打不开怎么回事 浏览器打不开的处理方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了

2026年10月11日 02:00

websocket整合springboot(Springboot整合Websocket遇到的坑)

websocket整合springboot(Springboot整合Websocket遇到的坑)

大家好,websocket整合springboot相信很多的网友都不是很明白,包括Springboot整合Websocket遇到的坑也是一样,不过没有关系,接下来就来为大家分享关于websocket整合springboot和Springbo

2026年10月11日 01:40

小米官方首爆miui14(miui14耗电严重官方回应)

小米官方首爆miui14(miui14耗电严重官方回应)

各位老铁们好,相信很多人对小米官方首爆miui14都不是特别的了解,因此呢,今天就来为大家分享下关于小米官方首爆miui14以及miui14耗电严重官方回应的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月11日 00:40

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本篇文章给大家谈谈drawerlayout,以及android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月10日 19:20

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

大家好,今天小编来为大家解答以下的问题,关于xor四位数怎么运算,单片机怎样用C语言实现4个数字间的异或这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 17:50

最近更新

thinkpade470c加内存条(thinkpad e470c内存条是什么牌子如果要添加4g内存什么牌子比较好)
2026-10-11 09:00:03 浏览:0
frontpage的主要功能(frontpage是什么)
2026-10-11 08:40:18 浏览:0
ideapad15alc7能玩什么游戏(联想ideapad15可以玩刺客信条启示录吗)
2026-10-11 08:10:05 浏览:0
me是国内域名吗(me域名的概况)
2026-10-11 07:50:35 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:5
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表