首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 无法禁用ViewState,怎么办? [已结贴,结贴人:ismycxp]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:14:28 楼主
    protected   void   Page_Load(object   sender,   EventArgs   e)
            {
                    EnableViewState   =   false;
                    ViewState[ "w "]   =   "win ";
            }
            protected   void   Button1_Click(object   sender,   EventArgs   e)
            {
                    Response.Write(ViewState[ "w "].ToString());
            }

    只要点击button,照样显示win
    在web.config: <pages   enableViewState= "false "> </pages>
    在页头: <%@   Page   Language= "C# "   AutoEventWireup= "true "     CodeFile= "Default.aspx.cs "   Inherits= "_Default "   EnableViewState= "false "   %>
    在控件: <asp:textbox   runat= "server "   ID= "t "   EnableViewState=false>


    我都把它们禁用了,可是页面还是会出现
    <input   type= "hidden "   name= "__VIEWSTATE "   id= "__VIEWSTATE "   value= "/wEPDwUJMjY4MTkwNDYwZGRoemkSLT6wc8CWyhWrPT57EBoWTg== "   />

    类似的东东,这是怎么一回事?

    怎么样能才能禁用ViewState
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ahone
    • 等级:
    发表于:2007-08-14 15:17:481楼 得分:10
    <input   type= "hidden "   name= "__VIEWSTATE "   id= "__VIEWSTATE "   value= "/wEPDwUJMjY4MTkwNDYwZGRoemkSLT6wc8CWyhWrPT57EBoWTg== "   />

    viewstate本来就是通过一个隐藏的文本框   实现的     我猜禁用后视图状态   它是不保存的   但是这个隐藏文本框似乎去不掉
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:21:322楼 得分:0
    不管保存不保存,
    有这东西肯定会影响效率的
    如果说我在Server端直接用Request.Form[ "__VIEWSTATE "]
    照样也能取到值,这就说明该值在提交页面的时候会被发送...
    这些都是多余的东西,我觉得没有必要存在!
    有没有办法去掉ViewState
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ahone
    • 等级:
    发表于:2007-08-14 15:23:333楼 得分:0
    重写   page类   应该可以
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • foyuan
    • 等级:
    发表于:2007-08-14 15:24:294楼 得分:5
    就那么一点点   没啥

    那个只要加上了带事件的控件或者form都回有的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zyug
    • 等级:
    发表于:2007-08-14 15:28:245楼 得分:0
    没事的,才这少点
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zyug
    • 等级:
    发表于:2007-08-14 15:30:536楼 得分:5
    基本上只要有runat=server的控件都有,功能越多,占用的viewstate字节越多
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:31:157楼 得分:0
    那为什么我
    EnableViewState   =   false;
    ViewState[ "w "]   =   "win ";

    用Response.Write(ViewState[ "w "].ToString());

    还是能输出ViewState的值啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cpp2017
    • 等级:
    发表于:2007-08-14 15:33:048楼 得分:10
    禁用ViewState是指禁用控件使用ViewState保存状态值.而不是程序都不能用ViewState
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ahone
    • 等级:
    发表于:2007-08-14 15:33:549楼 得分:0
    EnableViewState   =   false;
    ViewState[ "w "]   =   "win ";

    用Response.Write(ViewState[ "w "].ToString());
    ==========================================
    保存视图状态是在提交后
    你把代码
    Response.Write(ViewState[ "w "].ToString());
    写到   一个button点击事件下试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:34:4910楼 得分:0
    慕老大说的没错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:36:0811楼 得分:20
    我都把它们禁用了,可是页面还是会出现

    ==========

    你自己的测试代码有问题

    象你那样的代码,每次请求都是【先】执行   ViewState[ "w "]   =   "win ";   这句

    再   Click   事件里面自然能够访问得到

    EnableViewState=false   是说,不将   ViewState   的内容发送到客户端,并表示说     ViewState   不可访问

    按这个试试,看看效果

    if(!IsPostBack)   {
            ViewState[ "w "]   =   "win ";
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:37:0312楼 得分:0
    并表示说   ViewState   不可访问

    》》》

    并【不】表示说   ViewState   不可访问
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:39:2813楼 得分:0
    <asp:textbox   runat= "server "   ID= "t "   EnableViewState=false>

    ========

    对于   TextBox   比较特殊(包括其他实现   IPostBackDataHandler   的控件,如   DropDownList)即使   EnableViewState   =   false,   也会保持其值,

    因为它们是通过   Request.Form   中的数据加载的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:40:3114楼 得分:0
    强啊,这点性能都要优化,真是优化高手啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:40:4515楼 得分:0
    优化狂人
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-08-14 15:45:3316楼 得分:0
    哦,明白...谢谢各位...!

    如果将Page的EnableViewState= "false "

    ViewState只存在于SERVER端,不发送到CLIENT

    当服务器加载ViewState时是从 "__VIEWSTATE "字段加载的,

    所以就地法读取到ViewState了


    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved