Я пытаюсь зарегистрировать некоторые кнопки для регистрации событий, потому что я продолжаю получать «Недопустимый аргумент обратной передачи или обратного вызова». Поскольку я передаю события кнопок вручную через __doPostBacks() из-за проверки на стороне клиента, я думаю, что это как-то связано с этим.
Я переопределил Render для использования 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, когда вы передаете ему ключ для элемента управления и аргументы.
Дело в том, что я не знаю, как это написать. Я не должен заранее знать, каким будет аргумент, поскольку selector, index и indexaux зависят от взаимодействия пользователя со страницей (а именно, выбора строки в GridView). Единственные примеры, которые я нахожу, это те, где аргумент всегда один и тот же, поэтому они просто пишут RegisterForEventValidation("nameOfControl", "XXXX"), где "XXXX" — фиксированная строка.
Любые идеи относительно того, как написать это, или если это не проблема?
Спасибо.
__doPostBack
вручную для проверки на стороне клиента. Может быть, проще спросить, как использовать валидаторы ASP.NET с вашей валидацией клинта. Кроме того, я не понимаю, почему вызов__doPostBack
должен вызывать недопустимый аргумент обратной передачи или обратного вызова. Источник этой ошибки где-то в другом месте. Вы меняете не кнопки на стороне клиента, а другие элементы управления, поэтому вам необходимо зарегистрировать их и их допустимые значения (которые ASP.NET не знает). - person Tim Schmelter   schedule 14.04.2012