zoukankan      html  css  js  c++  java
  • 编程经验:编程经验:高性能.NET WEB开发(2)EnableViewState

    EnableViewState

     

    简述ViewState的作用,没有ViewState的时候表单会出现什么情况。

     

    保持当前页面的一些控件的状态和值,eg:TextBox的值,Label的值,即使它们是visible=false;如果没有EnableViewState这个属性,这些控件就可能取不到值。

    1EnableViewState="true"

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="CanYou.NewsSys.Web.Test" EnableViewState="true" %>

     

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head id="Head1" runat="server">

        <title>EnableViewState</title>

    </head>

    <body>

        <form id="form1" runat="server">

            <select name="ListBox1" size="4" id="ListBox1"  runat="Server" style="width: 152px; z-index: 102; left: 176px; position: absolute; top: 120px">

            </select>

            <asp:Button runat="server" ID="btnEnableViewState" OnClick="btnEnableViewState_Click"

                Text="EnableViewState" />

        </form>

    </body>

    </html>

    此时运行该应用程序,单击网页上的按钮btnEnableViewState,在ListBox中会添加内容,不断地单击,内容则不断添加;每点击一次,Value值就增加一个值,长度不断变长(1+2..+n+..)。下面是Aspx页面的html源码:

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head id="Head1"><link href="App_Themes/MainStyle/common.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/Controls.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/Default.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/MainFrame.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/StyleSheet.css" type="text/css" rel="stylesheet" /><title>

           EnableViewState

    </title></head>

    <body>

        <form name="form1" method="post" action="Test.aspx" id="form1">

    <div>

    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTYyMTk0MjI4OA9kFgICAw9kFgICAQ8QZA8WA2YCAQICFgMQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7

    kuIDmrKHvvIEFHuWuouaIt

    +err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt

    +err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt

    +err+eCueWHu+aMiemSruS4gOasoe+8gWdkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUIT

    GlzdEJveDG8AlywMNsh3eflPAEr8Sqv6t+Tkw==" />

    </div>

            <select name="ListBox1" id="ListBox1" size="4" style=" 152px; z-index: 102; left: 176px; position: absolute; top: 120px">

           <option value="客户端点击按钮一次!">客户端点击按钮一次!</option>

           <option value="客户端点击按钮一次!">客户端点击按钮一次!</option>

           <option value="客户端点击按钮一次!">客户端点击按钮一次!</option>

    </select>

            <input type="submit" name="btnEnableViewState" value="EnableViewState" id="btnEnableViewState" />

        </form>

    </body>

    </html>

     

    2EnableViewState="false"

    不断单击按钮,则只能添加一次。

    <div>

    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTYyMTk0MjI4OGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCExpc3RCb3gxCSwMb6JC0NQ1qKDrgEO6T4KcMMo=" />

    </div>

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

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

     

    EnableViewState="false"

    点击三次button按钮:

    value="/wEPDwUKLTYyMTk0MjI4OGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCExpc3RCb3gxCSwMb6JC0NQ1qKDrgEO6T4KcMMo=" />

    ---------------------------------------------------------------------------------------------------------------------

    EnableViewState=" true "

    点击三次button按钮:

    value="/wEPDwUKLTYyMTk0MjI4OA9kFgICAw9kFgICAQ8QZA8WA2YCAQICFgMQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt

    +err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt

    +err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt

    +err+eCueWHu+aMiemSruS4gOasoe+8gWdkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUITGlzdEJveDG8AlywMNsh3eflPAEr8Sqv6t+Tkw==" />

    ---------------------------------------------------------------------------------------------------------------------

    EnableViewState设置为false,则传递状态值时则不包括它(以前的状态和值)

     

    相关文章:ASP.Net中控件的EnableViewState属性

  • 相关阅读:
    BZOJ 3611: [Heoi2014]大工程 [虚树 DP]
    BZOJ 3991: [SDOI2015]寻宝游戏 [虚树 树链的并 set]
    BZOJ 2286: [Sdoi2011消耗战 [DP 虚树]
    BZOJ 4767: 两双手 [DP 组合数]
    BZOJ 1426: 收集邮票 [DP 期望 平方]
    转「服务器运维」如何解决服务器I/O过高的问题
    iostat查看linux硬盘IO性能
    Linux前台、后台、挂起、退出、查看命令汇总
    Linux虚拟内存的作用
    -bash: iostat: command not found解决办法
  • 原文地址:https://www.cnblogs.com/Gemgin/p/3136317.html
Copyright © 2011-2022 走看看