Net中央调控件的EnableViewState属性威尼斯人6799.com

在ASP.Net中对一一WebForm控件引进之前尚未的EnableViewState属性。那性格格终归有怎么着用。我们知晓对于WebForm来讲,其代码是在劳动器端的,以拍卖客商端的呼吁。当客商通过浏览器浏览网页的时候,会对网页实行一些操作,举例展开新链接,或单击有些开关。在ASP中,这几个是通过脚本语言对其举办拍卖,之后再传递给劳务器端。可是在ASP.NET下,由于选择了code
behind工夫,在coding的时候,经常是将原先客商端实现的做事放到了劳务器端。

 

初稿发布时间为:二零零六-10-25 —— 来源于本身的百度文章 [由搬家工具导入]

那么,服务器是怎么知道客商的操作的啊?例如小编在文本框输入的内容,大概单击了登陆按键,服务器端是哪些获得那个消息的呢?因为从没那个音信,服务器端就不恐怕响应顾客的伸手。原理便是ASP.NET援引了viewstate的体制。在服务器端保存了网页种种控件及页面包车型地铁境况,那之中囊括种种控件在页面上的布局,和他们分其他本性。那么些值就封存在ViewState下。大家得以观察Aspx页面包车型地铁html源代码,借使这一个页面上有三个button开关,和二个listBox控件,html文件如下:

在ASP.Net中对一一WebForm控件引入在此以前不曾的EnableViewState属性。那些天性终究有怎么着用。大家知晓对于WebForm来讲,其代码是在劳动器端的,以管理顾客端的央求。当客户通过浏览器浏览网页的时候,会对网页实行一些操作,比方打开新链接,或单击有个别按键。在ASP中,那几个是通过脚本语言对其进展管理,之后再传递给劳务器端。不过在ASP.NET下,由于选拔了code
behind技艺,在coding的时候,日常是将原先客户端达成的劳作放到了服务器端。

指令是否在页央浼之间保持视图状态。假如要保全视图状态,则为
true;不然为 false。暗许值为 true。

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

那么,服务器是怎么精晓顾客的操作的啊?比如自个儿在文本框输入的从头到尾的经过,也许单击了登陆按键,服务器端是怎么样得到这一个音讯的吧?因为尚未这么些消息,服务器端就无法响应客商的呼吁。原理正是ASP.NET引用了viewstate的体制。在劳动器端保存了网页种种控件及页面包车型大巴场所,那中间囊括各种控件在页面上的布局,和她俩各自的脾性。这个值就保存在ViewState下。我们能够旁观Aspx页面包车型客车html源代码,要是那一个页面上有二个button开关,和二个listBox控件,html文件如下:

和煦总计

 <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>

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

加了EnableViewState=”false” 若没形成影响,请尽大概加上去

大家它的区别之处,一是少了原先所不可不响应客商端事件的脚本语言,一是多了贰个名字为”_VIEWSTATE”的属性。其值是一长串字符。类型为“hidden”。那个值记录的正是种种控件和页面包车型大巴状态消息。当客户对页面举行相关操作的时候,状态值爆发转移,并将转移的值传递给服务器端。服务器端在可比改动后的状态值和发轫值之间的区别,以响应具体的伸手。

 <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>

=======================以下转发===================

借使页面包车型客车控件比非常多,这种频仍的传递控件状态值对网络的损耗是异常的大的,因而,ASP.Net提供了EnableViewState属性,系统默许的值为true。当设置为true时,在传递状态值时就总结该控件;假如设置为false,则传递状态值时则不包含它。既然状态值不满含该控件,则客商端对它举办的操作,服务器端是不响应的。

咱俩它的差异之处,一是少了原先所不可不响应顾客端事件的脚本语言,一是多了一个名称为”_VIEWSTATE”的性子。其值是一长串字符。类型为“hidden”。那一个值记录的正是各类控件和页面包车型大巴景色消息。当顾客对页面举办有关操作的时候,状态值发生退换,并将改成的值传递给服务器端。服务器端在可比更换后的状态值和初叶值之间的界别,以响应具体的呼吁。

上述为官方对 EnableViewState
的分解,有个别难懂,我们以示范的秘技解说,我们制造三个 Web
Form,并加上贰个 ListBox、贰个 Button、贰个格局。

我们能够做个试验,在Button1_Click事件中,编写代码:

借使页面的控件很多,这种频仍的传递控件状态值对网络的损耗是异常的大的,由此,ASP.Net提供了EnableViewState属性,系统暗中同意的值为true。当设置为true时,在传递状态值时就归纳该控件;固然设置为false,则传递状态值时则不包蕴它。既然状态值不包含该控件,则客商端对它举办的操作,服务器端是不响应的。

程序代码

ListBox.Items.Add(”顾客端点击开关贰回!”);

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

<%@ Page Language=”C#” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<script runat=”server”>
    void AddItem(object sender, EventArgs e)
    {
        list.Items.Add(DateTime.Now.Ticks.ToString());
    }
</script><html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
    <title>EnableViewState 属性</title>
</head>
<body>
    <form id=”form1″ runat=”server”>
    <div>
      <asp:ListBox ID=”list” runat=”server”>
        <asp:ListItem Text=”EnableViewState 属性”
Value=”1″></asp:ListItem>
      </asp:ListBox>
      <asp:Button ID=”btn” runat=”server” Text=”追加一个 Item”
OnClick=”AddItem” />
    </div>
    </form>
</body>
</html>

那会儿运作该应用程序,单击网页上的开关,在ListBox中会增加内容,不断地单击,内容则频频抬高。要是大家将ListBox的EnableViewState属性改为false时,不断单击按键,则只可以增添三次。

ListBox.Items.Add(”客户端点击按键三遍!”);

在浏览器中访谈该网页,获得 HTML 源文件中如下内容:

如此有啥好处呢?假使大家在付出Web应用程序时,有些控件是不供给承受客户的操作或只要求经受三回操作的时候,大家能够将那些控件的EnableViewState属性改为false,那样能够优化大家的次第,提升网络访谈的进程。

那时运转该应用程序,单击网页上的按键,在ListBox中会加多内容,不断地单击,内容则持续抬高。假使大家将ListBox的EnableViewState属性改为false时,不断单击按键,则只好增多一遍。

<input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE”
value=”/wEPDwUKMTIyNTcyODQzNWRkKV9J6dx90HkLpaqCRtS3s4xsNnc=” />

这样有哪些好处吗?若是大家在付出Web应用程序时,有些控件是无需经受客户的操作或只须求接受贰遍操作的时候,大家得以将那么些控件的EnableViewState属性改为false,这样能够优化大家的主次,升高网络访问的速度。

以此 hidden 框存款和储蓄的是逐条控件的属性值与气象,比如 ListBox 的
Text、Value、Selected 等,那也是为啥在 ASP.NET
里,能够在服务器端获得列表的 Text 值的缘由。

 

先河尝试

未来点击按键,服务器端将实施 AddItem 方法,ListBox中的内容也跟着大增,查看 HTML 源文件中的“__VIEWSTATE”也随后大增 。关于
DateTime 请参见 ASP.NET
时间操作

重复尝试

当今大家修改 ListBox 的 EnableViewState 属性为 false。

<asp:ListBox ID=”list” runat=”server” EnableViewState=”false”>

双珍视击几下开关,大家能够开采,从前点击按键增多的 Item
都遗落了,现在历次点击开关,List博克斯 中都独有四个Item,多个为静态钦点的,一个是经过 AddItem 方法增添的。那是由于 ListBox的原委尚未通过“__VIEWSTATE”传送到劳动器端,服务器端不通晓 ListBox从前还动态增进的有内容。

留心观望,增多的数字并区别,那表达每一遍点击都实施了 AddItem
方法,并不是有个别小说所说的,使用 EnableViewState=”false”
时方式只进行一回,方法是每便都推行,只是出于并未有拿走前面动态增加(编辑、删除)后的内容,所以只有新型增多(编辑、删除)的剧情。

总结

EnableViewState 钦赐是还是不是向服务器端传送某(些)控件的属性值、状态。

EnableViewState 的暗中同意值为 true,设置为 false
能够下落数据传送量,当然应该在程序逻辑允许设置为 false 的意况下。

EnableViewState 可用于控件,也可用来 @
Page
@
Control
@
Master

指令语法。当控件的 EnableViewState 的装置与指令语法的设置区别时,取
false 值。