100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
.NET Framework

The Postback Model

How ASP.NET Web Forms simulates a stateful, event-driven experience over stateless HTTP through postbacks, __doPostBack, and cross-page posting.

Web Forms FoundationsIntermediate8 min readJul 10, 2026
Analogies

The Postback Model

ASP.NET Web Forms wraps every interactive element inside a single <form runat="server"> tag per page, and instead of navigating to a different URL for each action, most controls submit that same form back to the same page URL, a pattern called a postback. This lets Web Forms simulate a stateful, event-driven experience on top of stateless HTTP: clicking a Button doesn't take you to a new page, it resubmits the current page's form with extra hidden fields that tell the server exactly which control triggered the submission and what, if any, additional argument accompanied it.

🏏

Cricket analogy: A postback is like a bowler returning to the same end of the pitch to bowl the next delivery rather than switching grounds entirely, the action happens repeatedly at the same location with each ball carrying its own specific outcome.

How Postbacks Are Triggered

The client-side JavaScript function __doPostBack(eventTarget, eventArgument), automatically emitted by ASP.NET into the rendered page, is what actually submits the form when a control like a LinkButton (which isn't a native submit element) needs to trigger a postback; it populates the hidden __EVENTTARGET and __EVENTARGUMENT fields with the ID of the triggering control and any extra data before calling form.submit(). Controls that support the AutoPostBack property, such as a DropDownList or CheckBox, wire this same __doPostBack call to a native browser event like onchange or onclick, so selecting a new item can immediately post the page back to the server without the user clicking a separate button.

🏏

Cricket analogy: The __doPostBack function is like a twelfth man radioing in exactly which player needs a substitution and why, before the change is officially processed on the field, giving the umpires the precise target and reason for the interruption.

Cross-Page Posting

By default a postback always targets the same page it originated from, but setting a Button's PostBackUrl property redirects the form submission to a different page entirely, a pattern called cross-page posting; the receiving page can then access the originating page's public controls through the strongly typed PreviousPage property (after declaring a @PreviousPageType directive) to read values the user entered before navigating away. This is Web Forms' answer to passing structured data between pages without resorting to query strings or Session state, though it only works for controls that explicitly set PostBackUrl rather than the default same-page postback.

🏏

Cricket analogy: Cross-page posting is like a fielder throwing the ball directly to the wicketkeeper at the stumps rather than relaying it through an intermediate fielder first, a direct hand-off to a specific different destination.

aspx
<%-- LoginPage.aspx --%>
<asp:TextBox ID="UsernameTextBox" runat="server" />
<asp:Button ID="LoginButton" runat="server" Text="Log In"
    PostBackUrl="~/Welcome.aspx" />

<%-- A DropDownList that posts back immediately on selection change --%>
<asp:DropDownList ID="CountryDropDown" runat="server" AutoPostBack="true"
    OnSelectedIndexChanged="CountryDropDown_SelectedIndexChanged">
    <asp:ListItem Text="United States" Value="US" />
    <asp:ListItem Text="India" Value="IN" />
</asp:DropDownList>
csharp
// Welcome.aspx.cs
// @PreviousPageType VirtualPath="~/LoginPage.aspx" directive added to Welcome.aspx
protected void Page_Load(object sender, EventArgs e)
{
    if (PreviousPage != null)
    {
        TextBox usernameBox = (TextBox)PreviousPage.FindControl("UsernameTextBox");
        if (usernameBox != null)
        {
            WelcomeLabel.Text = "Welcome, " + usernameBox.Text + "!";
        }
    }
}

Because a full postback re-executes the entire page lifecycle and re-renders the complete HTML response, every postback carries the overhead of a full round trip and full page reload, even for something as small as updating one label. ASP.NET AJAX's UpdatePanel control addresses this by intercepting the postback client-side and only refreshing the markup inside the panel, giving the appearance of a partial update while the server-side lifecycle still technically runs in full.

  • A postback resubmits the same page's single server-side form rather than navigating to a new URL.
  • The __doPostBack JavaScript function populates __EVENTTARGET and __EVENTARGUMENT before submitting.
  • AutoPostBack wires controls like DropDownList to trigger __doPostBack on native browser events.
  • PostBackUrl enables cross-page posting, redirecting the submission to a different page entirely.
  • PreviousPage (with @PreviousPageType) lets the receiving page read the originating page's controls.
  • Every postback re-executes the full page lifecycle and re-renders the complete HTML response.
  • UpdatePanel layers AJAX on top of postbacks to visually refresh only part of the page.

Practice what you learned

Was this page helpful?

Topics covered

#NETFramework#ClassicASPNETWebFormsWebPagesStudyNotes#MicrosoftTechnologies#ThePostbackModel#Postback#Model#Postbacks#Triggered#StudyNotes#SkillVeris