Я пытаюсь зарегистрировать несколько кнопок для регистрации событий, потому что продолжаю получать «Недопустимый аргумент обратной передачи или обратного вызова». Поскольку я пропускаю события кнопок вручную через __doPostBacks(), из-за проверки на стороне клиента, я думаю, что это как-то связано с этим.ClientScript.RegisterForEventValidation и __doPostBack()
Я отменяю Рендер использовать RegisterForEventValidation как это:
protected override void Render(HtmlTextWriter writer)
{
ClientScript.RegisterForEventValidation(btnNuevo.UniqueID);
ClientScript.RegisterForEventValidation(btnBorrar.UniqueID);
ClientScript.RegisterForEventValidation(btnEditar.UniqueID);
ClientScript.RegisterForEventValidation(btnAlquilar.UniqueID);
base.Render(writer);
}
Но __doPostBacks на странице стороны клиента .aspx написано так:
...
__doPostBack('<%= btnNuevo.UniqueID %>', "");
...
__doPostBack('<%= btnBorrar.UniqueID %>', selected.childNodes[0].innerText);
...
__doPostBack('<%= btnEditar.UniqueID %>', index);
...
__doPostBack('<%= btnAlquilar.UniqueID %>', indexaux);
где selected.childNodes [0] .innerText, index и indexaux - это строки. Это все еще бросает это Исключение.
Я знаю, что есть перегрузка RegisterForEventValidation, где вы передаете ему ключ для элемента управления и аргументы.
Дело в том, что я не знаю, как это написать. Я не предполагаю, что вы должны знать, что такое аргумент, поскольку selecter, index и indexaux зависят от взаимодействия пользователя со страницей (а именно, выбора строки в GridView). Единственными примерами, которые я нахожу, являются те, где аргумент всегда один и тот же, поэтому они просто пишут RegisterForEventValidation («nameOfControl», «XXXX»), где «XXXX» является фиксированной строкой.
Любые идеи относительно того, как написать это, или если это не проблема?
Спасибо.
Почему вам нужно позвонить '__doPostBack' вручную все для проверка на стороне клиента. Может быть, проще спросить, как использовать валидаторы ASP.NET с вашей проверкой clintside. Кроме того, я не понимаю, почему вызов '__doPostBack' должен бросать _« Недопустимый аргумент обратной передачи или обратного вызова.Источник этой ошибки находится где-то в другом месте. Вы меняете не кнопки на клиентах, а другие элементы управления, поэтому вам нужно зарегистрироваться эти и их допустимые значения (что ASP.NET не знает). –
Ситуация такова: http://stackoverflow.com/questions/10126274/calling-a-code-behind-function-from-javascript-that- may-return-another-javascrip. Я полагал, что проблема связана с настройкой кнопок на событиях, которые должны сначала вызвать функцию Javascript, затем функцию C# и страницу, не зная или не узнающей это. Это или проблема с HOW GridView изменен (потому что кнопка, которая добавляет новый регистр на нем, работает нормально, но тот, который редактирует регистр, вызывая тот же ModalPopup и делая практически то же самое, выдает исключение Invalid Postback). – Heathcliff