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

Я получаю следующую ошибку, когда на моем элементе управления привязкой данных происходит событие (Добавить / Изменить / Удалить).

Недействительный аргумент обратной передачи или обратного вызова. Проверка событий включается с помощью в конфигурации или ‹% @ Page EnableEventValidation =" true "%> на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова исходят от серверного элемента управления, который изначально их визуализировал. Если данные действительны и ожидаются, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки.

Я использую настраиваемый элемент управления DataList, но эта проблема также возникает с элементами управления GridView, DetailsView, FormView и Repeater (и, возможно, с другими элементами управления привязкой к данным).

Ответы, которые я могу найти, говорят мне отключить проверку в файле конфигурации или на странице, но это не похоже на лучшее решение. Что я делаю неправильно?


person Robert Wagner    schedule 16.11.2008    source источник


Ответы (3)


Проблема заключается в загрузке данных для элемента управления в событие загрузки страницы и вызове метода DataBind (). Однако похоже, что если метод DataBind () вызывается до того, как события возникают, вышеупомянутое исключение генерируется при изменении наименования элемента управления.

Решение состоит в том, чтобы изменить это значение на if (! IsPostback) DataBind (), а затем вызвать метод DataBind () в конце обработчика событий. В любом случае вам нужно будет вызывать его большую часть времени в конце обработчика, чтобы повлиять на изменения.

Если это не ваша проблема и вы изменяете элементы управления на стороне клиента с помощью JavaScript, ознакомьтесь с эта статья.

Это сообщение, на которое я ответил сам, поскольку в моем блоге было много ответов на эту проблему, и я подумал, что могу поделиться им в дальнейшем.

person Robert Wagner    schedule 16.11.2008

Спасибо тебе за это. Я столкнулся с этой проблемой, и ваш ответ помог мне ее исправить.

Альтернативой вызову метода DataBind () в конце каждого обработчика событий является выполнение его один раз в событии PreRender страницы.

person Daniel Liuzzi    schedule 25.06.2009

У меня возникла та же проблема, и мне потребовалось несколько часов, чтобы решить мою проблему. Ответ Роберта частично помог мне, и, несмотря на привязку данных к моему ретранслятору, независимо от того, был ли отправлен ответ или нет, проблема все еще сохранялась. После долгого исследования я наткнулся на сообщение, в котором предлагалось установить UseSubmitBehavior = "false", бинго, и это решило проблему. Надеюсь, это поможет.

person Taimur Khan    schedule 16.08.2013