«Недопустимый аргумент обратной передачи или обратного вызова» с элементами управления Databound - PullRequest
13 голосов
/ 16 ноября 2008

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

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

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

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

Ответы [ 3 ]

24 голосов
/ 16 ноября 2008

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

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

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

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

7 голосов
/ 25 июня 2009

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

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

3 голосов
/ 16 августа 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...