"Недопустимый аргумент обратной передачи или обратного вызова" с элементами управления данными
Я получаю следующую ошибку, когда событие (Add/Edit/Delete) появляется в моем управлении с привязкой к данным.
Недопустимый аргумент обратной передачи или обратного вызова. Проверка событий разрешена с использованием конфигурации или <% @Page EnableEventValidation = "true" % > в стр. В целях безопасности это функция проверяет, что аргументы события обратной передачи или обратного вызова с сервера, который изначально их представляли. Если данные действителен и ожидается, используйте ClientScriptManager.RegisterForEventValidation метода для регистрации данные обратной передачи или обратного вызова для проверка.
Я использую настраиваемый элемент управления DataList, но эта проблема также возникает с элементами управления GridView, DetailsView, FormView и Repeater (и, возможно, с другими элементами управления данными).
Ответы, которые я могу найти, говорят мне отключить проверку в файле конфигурации или странице, но это не похоже, что это лучшее решение. Что я делаю неправильно?
Ответы
Ответ 1
Проблема заключается в загрузке данных для элемента управления на странице Загрузка события и вызов метода DataBind(). Однако представляется, что, если метод DataBind() вызывается до того, как события будут подняты, указанное выше исключение создается при изменении имени элемента управления.
Решение состоит в том, чтобы изменить это на if (! IsPostback) DataBind(), а затем вызвать метод DataBind() в конце обработчика событий. Вам нужно будет называть это большую часть времени в любом случае в конце обработчика, чтобы повлиять на изменения.
Если это не ваша проблема, и вы модифицируете элементы управления на стороне клиента с помощью JavaScript, посмотрите в этой статье.
Это автоответчик, так как я получал много ответов в своем блоге по этой проблеме и думал, что могу поделиться им дальше.
Ответ 2
Спасибо за это. Я столкнулся с этой проблемой, и ваш ответ сам помог мне исправить это.
Альтернативой вызову метода DataBind() в конце каждого обработчика событий является его однократное выполнение в событии PreRender страницы.
Ответ 3
У меня возникла одна и та же проблема, и мне потребовалось несколько часов, чтобы решить мою проблему. Ответ Роберта частично помог мне и, несмотря на привязку моего ретранслятора, независимо от поста или нет, проблема все еще сохранялась. После много исследований я наткнулся на сообщение, в котором предлагалось установить UseSubmitBehavior = "false" , bingo, и он решил проблему. Надеюсь, это поможет.