在ASP.Net中对各个WebForm控件引入以前没有的EnableViewState属性。这个属性究竟有什么用。我们知道对于WebForm而言,其代码是在服务器端的,以处理客户端的请求。当用户通过浏览器浏览网页的时候,会对网页进行某些操作,比如打开新链接,或单击某个按钮。在ASP中,这些是通过脚本语言对其进行处理,之后再传递给服务器端。但是在ASP.NET下,由于采用了code behind技术,在coding的时候,通常是将以前客户端完成的工作放到了服务器端。

那么,服务器是怎么知道客户的操作的呢?比如我在文本框输入的内容,或者单击了登录按钮,服务器端是怎样得到这些信息的呢?因为没有这些信息,服务器端就无法响应客户的请求。原理就是ASP.NET引用了viewstate的机制。在服务器端保存了网页各个控件及页面的状态,这其中包括各个控件在页面上的布局,和他们各自的属性。这些值就保存在ViewState下。我们可以观察Aspx页面的html源代码,假设这个页面上有一个button按钮,和一个listBox控件,html文件如下:

<input type="hidden" name="__VIEWSTATE" value="dDwzODYzNDM5NTU7Oz7FvviJbq45bDa7QJaumIiOhZ8mOQ==" />

<input type="submit" name="Button1" value="Button" id="Button1" style="height:40px;width:96px;Z-INDEX: 101; LEFT: 200px; POSITION: absolute; TOP: 240px" />
 <select name="ListBox1" size="4" id="ListBox1" style="width:152px;Z-INDEX: 102; LEFT: 176px; POSITION: absolute; TOP: 120px"></select>

我们它的不同之处,一是少了以前所必须响应客户端事件的脚本语言,一是多了一个名为”_VIEWSTATE”的属性。其值是一长串字符。类型为“hidden”。这个值记录的就是各个控件和页面的状态信息。当用户对页面进行相关操作的时候,状态值发生改变,并将改变的值传递给服务器端。服务器端在比较改变后的状态值和初始值之间的区别,以响应具体的请求。

一旦页面的控件很多,这种频繁的传递控件状态值对网络的消耗是很大的,因此,ASP.Net提供了EnableViewState属性,系统默认的值为true。当设置为true时,在传递状态值时就包括该控件;如果设置为false,则传递状态值时则不包括它。既然状态值不包括该控件,则客户端对它进行的操作,服务器端是不响应的。

我们可以做个实验,在Button1_Click事件中,编写代码:

ListBox.Items.Add(”客户端点击按钮一次!”);

此时运行该应用程序,单击网页上的按钮,在ListBox中会添加内容,不断地单击,内容则不断添加。如果我们将ListBox的EnableViewState属性改为false时,不断单击按钮,则只能添加一次。

这样有什么好处呢?如果我们在开发Web应用程序时,某些控件是不需要接受用户的操作或只需要接受一次操作的时候,我们可以将这些控件的EnableViewState属性改为false,这样可以优化我们的程序,提高网络访问的速度。

ASP.Net中控件的EnableViewState属性相关推荐

  1. C# WPF中控件的Margin属性

    在WPF中,控件的Margin属性是一个常见的属性 通过"Thickness"方法可以看见 所以四个参数对应的为:左上右下 例如: 就是有个控件与之相邻的控件的间距为左边距10,上 ...

  2. asp.net中控件id,clientid,uniqueid的区别

    id是你在代码编写时给其赋的id属性,如果没有进行赋值,系统会自动生成一个名称,如:_ctlX,X是从0开始的递增的索引,范围是0~127 uniqueid是asp.net为每一个控件生成的真正的服务 ...

  3. 动态创建asp.net控件之我见

    最近考虑将之前用delphi设计的开发框架思路在asp.net上实现,其中有一项功能时动态生成录入界面,这在form开发程序中比较简单只要设置好动态生成的控件的所有者(owner),及位置还有相关事件 ...

  4. Asp.net控件开发学习笔记(六)----数据回传

    在Asp.net中,利用Http Post的回传机制意味着可以再客户端存储状态并且可以在服务器接收.Asp.net中大部分控件都提供了存储自身状态的功能并且在自身状态改变时引发对应事件.IPostDa ...

  5. 【转】Asp.net控件开发学习笔记整理篇 - 数据回传

    最近一直在做MVC项目,对于WEBFORM 好像快忘记了.周末无聊,顺带看看他人的笔记.再次温习下. 复习大纲: 导航.页面生命周期及其它导论 一.服务器控件生命周期 二.控件开发基础 三.Asp.n ...

  6. WinForm控件开发总结(五)-----为控件的复杂属性提供类型转换器

     上一篇文章我已经介绍了TypeConverterAttribute元数据的作用,本文将通过代码向你展示具体的实现.在这个例子中,我要给控件添加一个复杂的属性,这个属性对这个控件没有什么功用,纯粹是为 ...

  7. ASP.NET Button控件的UseSubmitBehavior属性引发的血案

    这里先不说标题上的UseSubmitBehavior属性是什么,先说下面这种情况. 通常,在我们写一个表单页面的时候,最下方会有"提交"和"返回"字样的两个按钮 ...

  8. 怎么在ASP.NET中写HTML,如何:在 ASP.NET 网页中设置控件的 HTML 属性

    如何:在 ASP.NET 网页中设置控件的 HTML 属性 10/22/2014 本文内容 更新:2007 年 11 月 这些示例显示如何向页面中的元素添加 HTML 属性.第一个示例演示如何以声明方 ...

  9. [原]请留心asp:Image控件中的ImageUrl属性

    今天快下班的时候,打开自己做的页面,在页面上(用的是Firefox)随便点点,检查看看有没有什么地方要修改的.但就是这简单的动作,切发现了一个让我郁闷的.同时也花了我将近两个小时才解决的问题----空 ...

  10. ASP.NET开发:在用户控件中添加属性

    在WEB开发中,可重用的代码我们可以把它写成一个通用模块供需要的地方来引用.本文就是介绍在ASP.NET的web编程时,如何在用户控件中添加属性,实现这种方法:举例说明详解. 在WEB开发中经常有一些 ...

最新文章

  1. 中心化,去中心化?关乎互联网未来命运的重要选
  2. STM32的SPI问题。
  3. windows 7 memcached报failed to install service or service already installed的解决方案
  4. 【CyberSecurityLearning 49】PHP与MySQL进行交互
  5. CYQ.Data 轻量数据层之路 应用示例一 留言版(四)
  6. Vue入门之animate过渡动画效果
  7. Python+OpenCV:色彩空间转换
  8. 49. 学会分析与STL相关的编译器诊断信息
  9. Linux程序设计-7-复习重点
  10. Win10系统禁用驱动程序强制签名
  11. IIS配置启动.net项目时报错:“/”应用程序中的服务器错误。
  12. 深蓝学院-多传感器融合定位课程学习分享-专栏汇总
  13. 华氏温度转换为摄氏温度,c语言实例一
  14. C#打开文件夹加载图片
  15. FP7195大功率内部转模拟全程无频闪调光DC-DC恒流芯片
  16. 《魔兽世界》的魅力究竟在哪儿?
  17. swift AVFoundation AVPlayer 视频播放器——swift学习(十)
  18. 理解Trigger/Action/Event的区别
  19. java和智神_动漫界和智神、攻略之神、梨神被称神的动漫人物,你知道还有谁?...
  20. Vlog基础教程+系统教程

热门文章

  1. 全功能短视频平台去水印解析页面源码
  2. deepinv2 添加打印机_Deepin系统上安装使用HP惠普打印机的方法
  3. 英雄联盟大乱斗一个队出现两个杰斯-多线程死锁
  4. 越狱环境下代码控制手机重启(IOS,XCODE)
  5. 那些APP活动中的刷量与作弊
  6. 三星s8清除html查看器,三星Galaxy S8/S8+双清教程_怎么清理数据缓存和恢复出厂设置...
  7. Android Studio中修改APP图标和APP名称
  8. 计算机科学与技术学科评估 第五轮,【学科评估】解读第五轮学科各学科评估变化(上)...
  9. 基于OpenCV的银行卡号识别系统实现(三)-----输入图像的处理+代码实现
  10. 整人代码大集合/不要乱使用!