今天我做了个小实验,代码如下:
<div>
<asp:TextBox ID="Text1" runat="server" EnableViewState="False"></asp:TextBox>
<br/>
<input type="text" id="Text2"/>
<br/>
<input type="text" id="Text3" runat="server"/>
<br/>
<asp:Button ID="Button1" runat="server" Text="提交"/>
</div>运行进入页面后,在Text1,Text2,Text3中分别输入文字
为什么在点击了"提交"后,Text1的文字保存在页面中,Text2,Text3的文字在调转后就没了呢?

解决方案 »

  1.   

    应该是你没有进行IsPostBack处理
      

  2.   

    结果应该是Text1/Text3的文字保存在页面中,Text2的文字在调转后就没了.
    <asp:TextBox ID="Text1" runat="server" EnableViewState="true"> </asp:TextBox>  
    text1中和text3中也是还含有文字的!
    没太懂楼主的意思,如果想试试EnableViewState的效果,不如拉个<asp:DropDownList>试试
      

  3.   

    Text1/Text3 都是服务器控件啊,EnableViewState可以弄个如楼上所说的DropDownList来看
      

  4.   

      其实你做了这三个的对比,答案也就出来了.原因就在于 EnableViewState="False" 这个属性.原理就是ASP.NET引用了viewstate的机制,在服务器端保存了网页各个控件及页面的状态,这其中包括各个控件在页面上的布局,和他们各自的属性.这些值就保存在ViewState下.可以观察下Aspx页面的html源代码,看看<asp:TextBox ID="Text1" runat="server" EnableViewState="False"> </asp:TextBox>这个是不是多了一个名为"_VIEWSTATE"的属性,其值是一长串字符,类型为"hidden".这个值记录的就是控件和页面的状态信息.当用户对页面进行相关操作的时候,状态值发生改变,并将改变的值传递给服务器端.服务器端在比较改变后的状态值和初始值之间的区别,以响应具体的请求.
      这样做有个好处就是:如果我们在开发Web应用程序时,某些控件是不需要接受用户的操作或只需要接受一次操作的时候,我们可以将这些控件的EnableViewState属性改为false,这样可以优化我们的程序,提高网络访问的速度.
      

  5.   

    TextBox的EnableViewState看不出效果 因为它的text的属性的更改是通过接受用户的输入而改变的 而不是取的视图状态的值viewstate的状态在页面开始生成到接受用户输入这个期间来加载 然后再通过接受的用户的输入来覆盖(扩充)已经加载的状态 最终生成页面text2没有值 正是因为它不是runat=server 用户的输入没有对它起作用 它呈现的始终是页面默认的状态(html中写好的最初状态)
      

  6.   

    lz你写的代码没有所以无法判断你的实验是否成功;
    首先说明一点:<asp:TextBox ID="Text1" runat="server" EnableViewState="False"> </asp:TextBox>
    这个控件和<asp:TextBox ID="Text1" runat="server"> </asp:TextBox>是没有区别的;不是因为试图状态的问题;而是TextBox服务器控件在解析为html代码时是<input>,所以里面的值还是会传递和保留的;和上面所说的,EnableViewState这个状态的测试不要使用TextBox控件;
    其他的看一下7楼的说明把
      

  7.   

    在解析成html后,是出来了以下的一个隐藏控件:
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEyNTI1NjQ4NTJkZP73T0qSar/gOVcUUMtr1DKHDIcT" />
    我想知道,是不是在这里,已经把所有的服务器控件的ID,及相应的值都存储了起来;
    并且这个隐藏控件不认其他,只认runat是否为server;