Недопустимый аргумент обратной передачи или обратного вызова в пользовательском элементе управления

Это ошибка:

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();
        }
 }

UserControl:

 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. Итак, из того, что я прочитал, это то, что, поскольку они не загружены изначально, это может быть ошибкой?

1 ответ

Решение

Изменить EnableEventValidation="ложь" в верхней части страницы..!! чтобы это работало.. но это не хороший метод..!!

Если для свойства EnableEventValidation установлено значение true, ASP.NET проверяет, что событие элемента управления возникло из пользовательского интерфейса, который был представлен этим элементом управления. Элемент управления регистрирует свои события во время рендеринга, а затем проверяет события во время обратной передачи или обработки обратного вызова. Например, если элемент управления списком включает параметры с номерами 1, 2 или 3 при отображении страницы, и если получен запрос обратной передачи, указывающий параметр 4, ASP.NET вызывает исключение. Все управляемые событиями элементы управления в ASP.NET используют эту функцию по умолчанию. Если вы пишете клиентский скрипт, который изменяет элемент управления на клиенте во время выполнения, вам, возможно, придется использовать метод RegisterForEventValidation, чтобы избежать ложных ошибок проверки события.

проверьте эту ссылку

Другие вопросы по тегам