zoukankan      html  css  js  c++  java
  • ASP.NET -- WebForm -- ViewState

    ASP.NET -- WebForm --  ViewState

    1. ViewState的作用

    当 ASP .NET 中的表单被提交时,表单会随所有表单值一同重新出现。这是由于 ASP .NET 维持了您的 ViewState。

    ViewState 会在页面被提交到服务器时指示其状态。通过在每张页面中的一个 <form runat="server"> 控件中放置一个隐藏域,我们就可以定义页面的状态了。

    新建一个Test.aspx:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test"  %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>my Test Aspx</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </div>
        </form>
    </body>
    </html>

    在浏览器--开发者工具可看到ViewState隐藏域的存在:

     

    2. ViewState的开启和关闭

    维持 ViewState 是 ASP.NET Web 表单的默认设置。

    如果您不希望维持 ViewState,请在 .aspx 页面的顶部包含指令: <%@ Page EnableViewState="false" %>,或为任意控件添加属性:EnableViewState="false"。

    整个页面关闭ViewState:

    单个控件关闭ViewState:

    把EnableViewState="false",在浏览器--开发者工具,还是可以看见隐藏域__ViewState的。

    如果想彻底去掉隐藏域__ViewState,必须将runat="server"去掉,换成action  (但是这样做,会导致工具箱的控件不能用), 如下图:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>my Test Aspx</title>
    </head>
    <body>
        <form action="Test.aspx" method="post">
        <div>
            <input type="text" name="txtName"/>
        </div>
        </form>
    </body>
    </html>

    浏览器开发者工具中可清楚看见,隐藏域__ViewState被去掉了

  • 相关阅读:
    ESAPI = Enterprise Security API
    WingIDE中调试GAE(google app engine)
    C# 发送Http请求 WebClient类
    [转]使用Google App Engine Helper for Django
    装上Window7
    最近遇到个关于接口的奇怪的问题
    JNDI概述(转载)
    Google App Engine 中通过自定义Django的filter解决时区问题
    C# string与byte[]互转
    Python天天美味(33) 五分钟理解元类(Metaclasses)[转]
  • 原文地址:https://www.cnblogs.com/ChengWenHao/p/AspNetPart3.html
Copyright © 2011-2022 走看看