Estoy trabajando con:
ASP.NET 2.0.50727
Extensiones Ajax 1.0
Puse un UpdatePanel que contiene campos que el usuario va a llenar. Puse controles de validación para asegurarme de que el usuario llena los campos. Los controles de validación funcionaban de una manera extraña, y además aparecía este error:
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.
Estuve investigando y resulta ser que los controles de validación no funcionan dentro de un UpdatePanel. Encontrarás más información aquí:
http://forums.asp.net/t/1116324.aspx (lee el segundo post).
Lo bueno es que hay una manera de darle la vuelta a este problema.
La razón del problema y la solución se encuentra aquí:
http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx
Pero te la traduzco. 🙂
Tienes que bajarte estos archivos y ponerlos en el fólder bin
de tu aplicación.
Después de eso, abre tu archivo web.config
y dentro de la sección Pages
teclea lo siguiente:
<tagmapping>
<add tagtype="System.Web.UI.WebControls.CompareValidator" mappedtagtype="Sample.Web.UI.Compatibility.CompareValidator, Validators, Version=1.0.0.0"></add>
<add tagtype="System.Web.UI.WebControls.CustomValidator" mappedtagtype="Sample.Web.UI.Compatibility.CustomValidator, Validators, Version=1.0.0.0"></add>
<add tagtype="System.Web.UI.WebControls.RangeValidator" mappedtagtype="Sample.Web.UI.Compatibility.RangeValidator, Validators, Version=1.0.0.0"></add>
<add tagtype="System.Web.UI.WebControls.RegularExpressionValidator" mappedtagtype="Sample.Web.UI.Compatibility.RegularExpressionValidator, Validators, Version=1.0.0.0"></add>
<add tagtype="System.Web.UI.WebControls.RequiredFieldValidator" mappedtagtype="Sample.Web.UI.Compatibility.RequiredFieldValidator, Validators, Version=1.0.0.0"></add>
<add tagtype="System.Web.UI.WebControls.ValidationSummary" mappedtagtype="Sample.Web.UI.Compatibility.ValidationSummary, Validators, Version=1.0.0.0"></add>
</tagmapping>
Yo lo probé y funciona ¡perfectamente!
Más adelante Microsoft sacará un parche para no tener que hacer este truco, así que si se te presenta este problema, te recomiendo primero bajarte la versión más nueva de ASP.NET y de las Extensiones de Ajax.