Click here to Skip to main content
13,255,711 members (55,751 online)
Click here to Skip to main content
Add your own
alternative version


5 bookmarked
Posted 28 Jan 2013

“Invalid Postback or Callback Argument”

, 28 Jan 2013
Rate this:
Please Sign up or sign in to vote.
A possible solution

Problem Description

This is one the common issues that a lot of ASP.NET beginners face, post, and ask about. Typically, they post the error message as below and seek for resolution without sharing much about what they were trying to do.

[ArgumentException: Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.]

Though, error stack trace itself suggests a quick resolution by setting eventvalidation off, it is not a recommended solution as it opens up a security hole. It is always good to know why it happened and how to solve/handle that root problem.


Event validation is done to validate if the origin of the event is the related rendered control (and not some cross site script or so). Since control registers its events during rendering, events can be validated during postback or callback (via arguments of __doPostBack). This reduces the risk of unauthorized or malicious postback requests and callbacks.

Reference: MSDN: Page.EnableEventValidation Property

Based on the above, possible scenarios that I have faced or heard that raise the issue in discussion are:

Case #1

If we have angular brackets in the request data, it looks like some script tag is being passed to server.

Possible Solution

HTML encodes the angular brackets with the help of JavaScript before submitting the form, i.e., replace “<” with “&lt;” and “>” with “&gt;

function HTMLEncodeAngularBrackets(someString)
var modifiedString = someString.replace("<","&lt;");
modifiedString = modifiedString.replace(">","&gt;");
return modifiedString;

Case #2

If we write client script that changes a control in the client at run time, we might have a dangling event. An example could be having embedded controls where an inner control registers for postback but is hidden at runtime because of an operation done on outer control. This I read about on MSDN blog written by Carlo, when looking for the same issue because of multiple form tags.

Possible Solution

Manually register control for event validation within Render method of the page.

protected override void Render(HtmlTextWriter writer)

As said, one of the other common scenarios reported (which looks like falls in this same category) is building a page where one form tag is embedded in another form tag that runs on the server. Removing one of them corrects the flow and resolves the issue.

Case #3

If we re-define/instantiate controls or commands at runtime on every postback, respective/related events might go for a toss. A simple example could be of re-binding a datagrid on every pageload (including postbacks). Since, on rebind, all the controls in grid will have a new ID, during an event triggered by datagrid control, on postback the control IDs are changed and thus the event might not connect to correct control raising the issue.

Possible Solution

This can be simply resolved by making sure that controls are not re-created on every postback (rebind here). Using Page property, IsPostback can easily handle it. If you want to create a control on every postback, then it is necessary to make sure that the IDs are not changed.

protected void Page_Load(object sender, EventArgs e)
// Create controls
// Bind Grid


As said, an easy/direct solution can be adding enableEventValidation=”false” in the Page directive or Web.config file but is not recommended. Based on the implementation and cause, find the root cause and apply the resolution accordingly.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Sandeep Mewara
Software Developer (Senior)
India India
Current location: Bangalore, India.

You may also be interested in...

Comments and Discussions

QuestionInvalid postback or callback argument Pin
Member 125004303-May-16 6:19
memberMember 125004303-May-16 6:19 
GeneralMy vote of 5 Pin
VICK27-Mar-14 2:39
professional VICK27-Mar-14 2:39 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.171114.1 | Last Updated 28 Jan 2013
Article Copyright 2013 by Sandeep Mewara
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid