用户控件上的回发或回调参数无效

时间:2013-11-21 03:34:11

标签: c# asp.net callback postback aspxcombobox

这是错误:

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个下拉列表,我加载ddlContactsddlOrderbillto,所有内容都按预期运行。一旦我突然添加ddlState,我就会收到上面提到的错误。我已经尝试将它放在更新面板中,什么都没有。如果我评论ddlState数据源,数据绑定然后它工作,但显然我没有状态:(

请帮忙吗?

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

1 个答案:

答案 0 :(得分:1)

在页面顶部更改EnableEventValidation =“false”.. !!它的工作..但它不是一个好方法.. !!

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

check this link