0

这是错误:

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.

这就是我正在做的事情:

aspx:

protected void Page_Load(object sender, EventArgs e)
{
        if (!IsPostBack)
        {
                myUserControl.DataBind();
        }
 }

用户控制:

 public override void DataBind()
 {

        ddlContacts.DataSource = SessionHandler.Contacts;
        ddlContacts.DataValueField = "Id";
        ddlContacts.DataTextField = "Name";
        ddlContacts.DataBind();

        ddlOrderbillto.DataSource = SessionHandler.Contacts;
        ddlOrderbillto.DataValueField = "Id";
        ddlOrderbillto.DataTextField = "Name";
        ddlOrderbillto.DataBind();

        ddlState.DataSource = SessionHandler.FederalStates;
        ddlState.DataTextField = "Name";
        ddlState.DataValueField = "Id";
        ddlState.DataBind();

        if (Info.Id > 0)
        {
           //load info
        }
 }

如您所见,我加载了 2 个下拉列表,ddlContacts并且ddlOrderbillto一切都按预期工作。一旦我ddlState突然添加,我就会收到上面提到的错误。我试过把它放在更新面板里,什么都没有。如果我评论ddlState数据源,数据绑定然后它可以工作,但显然我没有状态:(

请帮忙?

编辑:我有 2 个其他下拉列表“ddlCounties”和“ddlCity”,当页面数据绑定时它们是空白的,但是在更改“ddlState”时,它们会通过 jquery 填充。所以从我读到的是,因为它们最初没有加载,所以这可能是错误?

4

1 回答 1

1

更改页面顶部的 EnableEventValidation="false" ..!! 让它工作..但这不是一个好方法..!!

当 EnableEventValidation 属性设置为 true 时,ASP.NET 会验证控件事件是否源自由该控件呈现的用户界面。控件在呈现期间注册其事件,然后在回发或回调处理期间验证事件。例如,如果列表控件在呈现页面时包含编号为 1、2 或 3 的选项,并且如果接收到指定选项编号 4 的回发请求,则 ASP.NET 会引发异常。默认情况下,ASP.NET 中的所有事件驱动控件都使用此功能。如果您编写的客户端脚本在运行时更改客户端中的控件,则可能必须使用 RegisterForEventValidation 方法以避免错误的事件验证错误。

检查这个链接

于 2013-11-21T04:00:11.113 回答