viewstate干什么用地。。禁了后 服务器控件是不是就不能用了?

解决方案 »

  1.   

    当然不是···试图状态是保存控件的状态的 可以关闭的如果关闭之后 会出现什么我建议你 使用        GridView 这样的数据绑定控件使用他自带的分页 然后把试图状态关闭 你就可以看到 关闭试图和不关闭有什么区别了
            
      

  2.   

    保存控件状态的吧,禁用了只能显示第一次,不保持状态。
    知道SESSION吧?VIEWSTATE相当于页面级别的SESSION。
      

  3.   

    不是的,可以用的,viewstate是保存服务器传给客户端的数据/
      

  4.   

    一般使用了ASP.NET服务器端控件的页面,如果在浏览器中查看源代码的话,会看见类似"<INPUT type='hidden' id='_ViewState'>"这种控件,其内容是一大堆的乱码,这个就是传说中的ViewState了。一般服务器端控件都会内置ViewState,比如ASP:TextBox,ASP:DropDownList。ViewState在控件中使用的初衷是保留控件在提交服务器之前的状态,这也就是为什么同样是文本框,一个正常的ASP:TextBox怎么和服务器通讯,值都会保留下来,而一个<input type="text">的文本框一刷新内容就没有了的原因。当然ViewState一般非常大,如果在非局域网的情况下还是建议少用为好,会增加不少传输的开销。当然一般内网的应用程序问题不大。禁用ViewState带来的明显问题就是控件的状态不再保留了,当然如果之前有信息保存在ViewState里也就存不了了。不过可以用其他手段解决,比如在页面上放隐藏控件,比如<input type="hidden">就不错,微软自己都用他:);同时还要极力避免与服务器通讯,所以一些AutoPostBack属性为true的控件就改成false吧,然后通过Ajax等方法进行交互。之前有位sp1234的前辈发过个帖子,标题好象是什么“对于强调交互性的页面,ViewState越大越好”的帖子。里面好象说可以通过对文件进行设置,将ViewState保存在服务器硬盘上,以消耗服务器的存储为代价降低ViewState带来的传输消耗,有兴趣可以找找,具体的帖子名称忘记了
      

  5.   

    和Session有些相同,不过仅限于本页,页面关掉就消失!
      

  6.   

    谢谢,那我在页面上已经设置了EnableViewState="false" 页面上有两个文本框和一个Button为什么页面打开后还能看到<div>
    <input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTgxNTU3NDE1NGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCGJ0bkxvZ2lu7sDg2RCT6RbduJzBAZ48CJOgxhg=" />
    </div>这些东西呀,怎么能彻底不让这些东西显示?
      

  7.   

    <form runat="server">的runat="server"这个去掉就行了,不过<asp:这类的控件就不能用了。
      

  8.   

    那就跟viewstate没关系了啊,所有的都去了还有存在一个viewstate,那在页面顶部设置EnableViewState="false"不是一点作用都没?
      

  9.   

    如果你不希望页面里出现ViewState这种东西,那么建议还是使用普通的HTML+JavaScript吧,或者从设计上改一改,把这个页面的动态内容去掉,直接放个HTML比较好。印象中似乎aspx页面想完全去掉ViewState还不是很容易
      

  10.   

    一个好的控件是可以允许禁用视图状态的, 禁用视图状态后仍可以运行正常, 如Label控件.另外, 禁用视图状态, 实际上只是禁用主控件中的LoadviewState和SaveViewState两个方法的执行. 此时可以选择控件状态.使用控件状态代码比较复杂些, 每次都要重写LoadControlSTate和SaveCotnrolState. 如果聪明一点, 仍然可以通过在控件状态两个方法中依次调用: base.SaveViewState和base.loadViewState, 照样可以在控件中使用ViewState对象. 
      

  11.   

    不需要主动的去使用试图状态,session基本可以解决你需要的。