1. Computing
Understanding ViewState and Postback Processing in ASP.NET applications
Find out what events (and in what order) are generated when ASP.NET receives a request for a Web Form. Learn about the ViewState - a technique ASP.NET uses to maintain page state changes across postbacks.
 Join the Discussion
"Post your views and comments to this chapter of the free Asp.Net Delphi Programming Course"
Discuss!
 Related Resources
• A Beginner's Guide to Asp.Net Programming for Delphi developers.TOC

Welcome to the eighteenth chapter of the FREE online programming course:
A Beginner's Guide to Asp.Net Programming for Delphi developers.
Understanding ViewState and Postback Processing.

Over the last few chapters we've been discussing web server controls and their usage in developing ASP.NET Web Forms. Before we dive into more advanced data-aware topics (like data binding and working with databases) we have one more interesting topic to cover: the ViewState and Web Form lifecycle.

The "Web Forms - building blocks of an Asp.Net application" chapter introduced Web Form events that are executed on a first call to a web page.

Throughout this chapter, you'll learn about the following:

  • Lifecycle of a Web Form
  • ViewState and its role in ASP.NET page processing
  • Processing Page Requests
    When an initial request for a page (a Web Form) is received by ASP.NET, it locates and loads the requested Web Form (and if necessary compiles the code). It is important to understand the sequence of events that occurs when a Web Forms page is processed. This knowledge will help you program your Web Forms pages and Web applications more effectively.

    As described before, initial page requests are relatively simple. The real work gets done when a page is submitted to itself - and a postback request is generated. Here are a few notes on postback requests:

    • The current value of every control on a Web Form is contained in the postback request. This is referred to as the Post Data
    • The content of the ViewState is also contained in the Post Data. ViewState holds the original property values of every control on a Web Form - before the user made any changes
    • If a postback was caused, for example, by a button click, Post Data is used to identify the button that caused the postback
    Postback Event Processing Sequence
    Here are the events (and the order) that are raised when a Button is clicked and a postback occurs:
    1. Page.Init + Control.Init for every control on the Web Form
      The first stage in the page life cycle is initialization. After the page's control tree is populated with all the statically declared controls in the .aspx source the Init event is fired. First, the Init event for the Page object occurs, then Init event occurs for each control on the Page. Viewstate information is not available at this stage.
    2. Page.LoadViewState
      After initialization, ASP.NET loads the view state for the page. ViewState contains the state of the controls the last time the page was processed on the server.
    3. Page.ProcessPostData
      Post Data gets read from the request and control values are applied to control initalized in stage 1.
    4. Page.Load + Control.Load for each control on the Page
      If this is the first time the page is being processed (Page.IsPostback property), initial data binding is performed here.
    5. "Change" events are fired for controls (TextChanged, SelectedIndexChanged, and similar)
      The current value (from Post Data) is compared to the original value located in the ViewState. If there is a difference "Changed" events are raised.
    6. Server-side events are fired for any validation controls
    7. Button.Click + Button.Command
      The Click and Command events are fired for the button that caused the postback
    8. Page.PreRender + Control.PreRender
    9. Page.SaveViewState
      New values for all the controls are saved to the view state for another round-trip to the server.
    10. Page.Render

    A more detailed explanation of the postback processing can be found in the "The ASP.NET Page Object Model - One Day in the Life of an ASP.NET Web Page" article.
    "Learn about the eventing model built around ASP.NET Web pages and the various stages that a Web page experiences on its way to HTML. The ASP.NET HTTP run time governs the pipeline of objects that transform the requested URL into a living instance of a page class first, and into plain HTML text next. Discover the events that characterize the lifecycle of a page and how control and page authors can intervene to alter the standard behavior"

    ViewState - the all mighty!
    As you can see from the postback steps, the ViewState has a major role in ASP.NET. Viewstate is a collection of name/value pairs, where control's and page itself store information that is persistent among web requests.

    "Understanding ASP.NET View State" looks at how an ASP.NET page maintains its state changes across postbacks, examining:

    • The ASP.NET Page Life Cycle
    • The Role of View State
    • The Cost of View State
    • How View State is Serialized/Deserialized
    • Specifying Where to Store the View State Information (see how to store it in a file on the Web server rather than as a bloated hidden form field)
    • Programmatically Parsing the View State
    • View State and Security Implications

    Note: if you need to examine the ViewState while debugging, try the Page ViewState Parsers

    To the next chapter: A Beginner's Guide to ASP.NET Programming for Delphi developers
    That's it for today. In the next chapter we'll introduce data binding! Stay tuned!

    If you need any kind of help at this point, please post to the Delphi Programming Forum where all the questions are answered and beginners are treated as experts.

    A Beginner's Guide to ASP.NET Programming for Delphi developers: Next Chapter >>
    >> An Introduction to Data Bindning in Delphi ASP.NET Applications

    ©2014 About.com. All rights reserved.