input里的value的值是一段很长的字符串,这是什么,是正常吗?为什么会产生这么长的值?怎样能使他不产生呢?/////////////////////////////////////////
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNjQ2MzIyMDY3D2QWAgIDD2QWAgIJDzwrAA0BAA8WBB4LXyFEYXRhQm91bmRnHgtfIUl0ZW1Db3VudAIOZBYCZg9kFiJmD2QWHGYPD2QWAh4Fc3R5bGUFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIBDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgIPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAw8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIEDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgUPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCBg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIHDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAggPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCCQ8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIKDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgsPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCDA8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAINDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgEPD2QWBh4Lb25tb3VzZW92ZXIFZmN1cnJlbnRjb2xvcj10aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvcjt0aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0nI2M5ZGVmYScsdGhpcy5zdHlsZS5mb250V2VpZ2h0PScnOx4Kb25tb3VzZW91dAVBdGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9Y3VycmVudGNvbG9yLHRoaXMuc3R5bGUuZm9udFdlaWdodD0nJzsfAgULQ3Vyc29yOmhhbmQWHGYPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAQ8PFgIeBFRleHQFATEWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUCIFByb2plY3RfQWRkX0NvZGVfRWRpdC5hc3B4P2lkPTMyCi5uZXTmioDmnK9kAgMPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQblvKDlj69kAgQPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VARXmmoLml7bmsqHmnInlkIjkvZzogIVkAgUPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQvvv6U1LjAwMC4wMGQCBg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUBB++/pTAuMDBkAgcPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQfvv6UwLjAwZAIIDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEL5a6hIOaguCDkuK1kAgkPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQnnvJbnqIvlraZkAgoPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQzkv6Hmga/lrabpmaJkAgsPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQoyMDEyLTAyLTIzZAIMDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEKMjAxMi0wNi0yNGQCDQ8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAICDw9kFgYfAwVmY3VycmVudGNvbG9yPXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yO3RoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPScjYzlkZWZhJyx0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwQFQXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPWN1cnJlbnRjb2xvcix0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwIFC0N1cnNvcjpoYW5kFhxmDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgEPDxYCHwUFATIWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUCIFByb2plY3RfQWRkX0NvZGVfRWRpdC5hc3B4P2lkPTU4CmphdmHmioDmnK9kAgMPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQblvKDlj69kAgQPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQExZAIFDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEE77+lMWQCBg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUBB++/pTAuMDBkAgcPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQfvv6UwLjAwZAIIDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEM5a6h5qC46YCa6L+HZAIJDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEJ57yW56iL5a2mZAIKDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEM5aSW6K+t5a2m6ZmiZAILDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQELMjAxMi0wNi0yNCBkAgwPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQsyMDEyLTA3LTE0IGQCDQ8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIDDw9kFgYfAwVmY3VycmVudGNvbG9yPXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yO3RoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPScjYzlkZWZhJyx0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwQFQXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPWN1cnJlbnRjb2xvcix0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwIFC0N1cnNvcjpoYW5kFhxmDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgEPDxYCHwUFATMWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCA">

解决方案 »

  1.   

    .Net Web页面使用的所谓ViewState,用于内部保存交换数据的,多少取决于页面上使用ViewState的元素。
      

  2.   

    这个假设是10K,占用多少网络带宽?你算过吗?如果不想要状态管理能力,关闭整个网站的 EnableViewState 开关好了。请你好好测试一下,还能不能编写出有自动化状态的程序。
      

  3.   

    控件的视图状态,在客户端用一个隐藏域存储,需要时可以设置控件的EnableViewState=false禁用它,不过不是任何时候都可以禁用的。
      

  4.   

    viewstate,保持数据状态的隐藏表单域。这么长是因为使用viewstate的控件太多了,数据量大,比如gridview控件。系统默认打开的,可以禁用,设置enableviewstate=false;。
      

  5.   

    如果它确实很大(10K根本不算大!而你贴的远远小于10K),你可以写这个代码:using System;
    using System.IO;
    using System.Linq;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Threading;
    using System.Web.UI;public class VPage : Page
    {
        static private DirectoryInfo _Dir;    private static DirectoryInfo Dir
        {
            get
            {
                if (_Dir == null)
                {
                    _Dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));
                    if (!_Dir.Exists)
                        _Dir.Create();
                    _Dir = new DirectoryInfo(Path.Combine(_Dir.FullName, "ViewState"));
                    if (!_Dir.Exists)
                        _Dir.Create();
                }
                return _Dir;
            }
        }    protected override object LoadPageStateFromPersistenceMedium()
        {
            PageStatePersister ps = this.PageStatePersister;
            ps.Load();
            if (ps.ControlState != null)
                ps.ControlState = 反序列化对象((string)ps.ControlState);
            if (ps.ViewState != null)
                ps.ViewState = 反序列化对象((string)ps.ViewState);
            return new Pair(ps.ControlState, ps.ViewState);
        }    protected override void SavePageStateToPersistenceMedium(object state)
        {
            PageStatePersister ps = this.PageStatePersister;
            if (state is Pair)
            {
                ps.ControlState = ((Pair)state).First;
                ps.ViewState = ((Pair)state).Second;
            }
            else
                ps.ViewState = state;
            if (ps.ControlState != null)
                ps.ControlState = 序列化对象(ps.ControlState);
            if (ps.ViewState != null)
                ps.ViewState = 序列化对象(ps.ViewState);
            ps.Save();
        }    private object 反序列化对象(string stateID)
        {
            if (stateID == null)
                return null;        object state = Cache[stateID];
            if (state == null)
                using (var stream = File.OpenRead(Path.Combine(Dir.FullName, stateID)))
                    state = new BinaryFormatter().Deserialize(stream);
            else
                Cache.Remove(stateID);
            return state;
        }    private string 序列化对象(object obj)
        {
            string stateID = Guid.NewGuid().ToString("N");
            Cache.Insert(stateID, obj, null, DateTime.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration);
            using (var stream = File.Create(Path.Combine(Dir.FullName, stateID)))
                new BinaryFormatter().Serialize(stream, obj);
            return stateID;
        }    static VPage()
        {
            ThreadPool.QueueUserWorkItem(h =>
            {
                var et = DateTime.Now.AddMinutes(-30);
                Dir.GetFiles()
                    .Where(f => f.LastAccessTime < et)
                    .ToList()
                    .ForEach(f =>
                    {
                        try
                        {
                            f.Delete();
                        }
                        catch { }
                    });
            });
        }
    }把这个class作为你的Paged的父类而继承。
      

  6.   

    我把enableviewstate=false关闭,会不会有影响啊?
      

  7.   

    如果enableviewstate=false,那么画面的数据就不会保持,意思就是你在输入框中输入了一个值,等提交之后,再次刷新画面时,这个值不会自动的显示出来。你试一试就知道什么效果了
      

  8.   

    我不知道微软是如何让这样一种蹩脚设计通过测试的。我个人用过一段时间的asp.net webform,我个人感觉,这是微软一款比较失败的产品,即使许多很多人用它取得了辉煌成果,但是从设计角度看,它违背了web程序最基本的理念。一个简单的html报文交换机制被活生生的复杂化,真是不理解微软当初是怎么想的。至于这个ViewState,这是asp.net webform的毒瘤,但却是它很重要的一个组成。所以,说了这么多,我觉得你不如换个web框架……