最近遇到了这样一个错误, “Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> 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 ” 。
解决方法:
1 )把整个页面的属性设置为 False, 默认为 True.
<%@ Page EnableEventValidation="false"%>
2 )单独把出错的控件 overloaded Render() 事件重写,
比如子控件 .Visible = False, 那么不会被 Render ,因此不会被 registered for event validation.
如果别的地方引用到这个 Event, 那么就会报错。
protected override void Render(HtmlTextWriter writer)
{
foreach (DataGridItem row in DataGrid1.Items)
ClientScript.RegisterForEventValidation(row.UniqueID.ToString() + ":_ctl0" );
base .Render(writer);
}