none
ViewState保存的数据有什么作用 RRS feed

答案

  • 视图状态(ViewState)保存的数据 提交到服务器有什么作用 

    首先这里要澄清一个概念。ViewState是用于单个页面来回传送数据的一种机制。因为无论服务端用ASP.NET还是PHP,解析到客户端必然是Html代码,而Html代码是“无记忆性”的——换句话说,第一次页面提交到第二次页面呈现服务器根本无法记得你究竟填写了啥。之所以用ViewState,其内部就是用于一次回传页面的时候自己记忆住表单中填写的全部内容并且为下一次页面呈现做“记忆”并且呈现出来。因此ASP.NET中TextBox的值在一次页面submit之后不会丢失,其原理也是使用了ViewState:

    [Editor("System.ComponentModel.Design.MultilineStringEditor,System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor)), Localizable(true), Bindable(true, BindingDirection.TwoWay), WebCategory("Appearance"), DefaultValue(""), WebSysDescription("TextBox_Text"), PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]
    public virtual string Text
    {
        get
        {
            string str = (string) this.ViewState["Text"];
            if (str != null)
            {
                return str;
            }
            return string.Empty;
        }
        set
        {
            this.ViewState["Text"] = value;
        }
    }

    帮助一起改进论坛质量?提交你的意见于此。
    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    2013年1月22日 7:53
  • 在Web的世界,你在網頁上做過的選擇後,你送出Web Request給Web Server,跟著從Web Server回傳Web Response給回你的Browser。這過程一直的來來回回,對Browser和Web Server,其實每次它們都當了新的Request和Response,沒記憶的。

    舉例說,你選了一個DropDownList的值,它立即回傳因為它需要改變其他control上的值,如果從上面所說來看,所有東西都會重置。

    所以在Web Programming中,我們要用一些"State Management"去作管理。ViewState是其中一種,還有Session、Application、Cookie、URL_Query...


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2013年1月22日 8:24

全部回复

  • 视图状态(ViewState)保存的数据 提交到服务器有什么作用 

    首先这里要澄清一个概念。ViewState是用于单个页面来回传送数据的一种机制。因为无论服务端用ASP.NET还是PHP,解析到客户端必然是Html代码,而Html代码是“无记忆性”的——换句话说,第一次页面提交到第二次页面呈现服务器根本无法记得你究竟填写了啥。之所以用ViewState,其内部就是用于一次回传页面的时候自己记忆住表单中填写的全部内容并且为下一次页面呈现做“记忆”并且呈现出来。因此ASP.NET中TextBox的值在一次页面submit之后不会丢失,其原理也是使用了ViewState:

    [Editor("System.ComponentModel.Design.MultilineStringEditor,System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor)), Localizable(true), Bindable(true, BindingDirection.TwoWay), WebCategory("Appearance"), DefaultValue(""), WebSysDescription("TextBox_Text"), PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]
    public virtual string Text
    {
        get
        {
            string str = (string) this.ViewState["Text"];
            if (str != null)
            {
                return str;
            }
            return string.Empty;
        }
        set
        {
            this.ViewState["Text"] = value;
        }
    }

    帮助一起改进论坛质量?提交你的意见于此。
    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    2013年1月22日 7:53
  • 在Web的世界,你在網頁上做過的選擇後,你送出Web Request給Web Server,跟著從Web Server回傳Web Response給回你的Browser。這過程一直的來來回回,對Browser和Web Server,其實每次它們都當了新的Request和Response,沒記憶的。

    舉例說,你選了一個DropDownList的值,它立即回傳因為它需要改變其他control上的值,如果從上面所說來看,所有東西都會重置。

    所以在Web Programming中,我們要用一些"State Management"去作管理。ViewState是其中一種,還有Session、Application、Cookie、URL_Query...


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2013年1月22日 8:24
  • http本身是无状态,之所以设计成无状态是因为考虑到无状态更能提高服务器的承载量。但是无状态也带来一些问题,viewstate是为了让微软提供的的web基于事件的编程模型能够顺利使用的附带产物。它本身就是在页面上创建隐藏文本,通过post服务器,对相应服务器控件进行状态的记录。

    所有回复都属原创,如有不清楚的回复请追问。

    2013年1月25日 23:16
    版主
  • asp.net 中的服务器控件一般有使用ViewState,属于状态管理中的概念,它可以自己存取值,但仅限于本页内使用。

    ViewState可以从页面级,控件级或者应用程序级进行禁用。

    但ViewState过大的时候会引发不可预知的异常。


    认真的活,认真的爱!

    2013年1月26日 16:23
    版主