Проверка события: разрешить __doPostBack для одного элемента управления и * любых * аргументов - PullRequest
4 голосов
/ 17 августа 2011

Я использую

__doPostBack(clientIdOfSomeButton, someData);

для создания PostBack в JavaScript. Проблема в том, что someData не известен заранее, и начинается проверка события, потому что я не могу ClientScript.RegisterForEventValidation каждое возможное значение someData.

Пока что я вижу только две возможности решения этой проблемы:

  1. Отключить проверку события для страницы, что не рекомендуется из соображений безопасности.
  2. Вместо того, чтобы передавать данные через проверку события, поместите данные в какое-то скрытое текстовое поле через JavaScript и затем вызовите __doPostBack. Это безобразно.

Есть какой-то третий вариант, который я пропустил? В идеале я бы хотел что-то вроде ClientScript.RegisterForEventValidationIgnoreArguments(myButton), но чего-то подобного не существует ...

1 Ответ

6 голосов
/ 17 августа 2011

Если некоторые данные заранее неизвестны, то как сервер узнает значение обратной передачи?Второй аргумент - указать тип события или конкретную информацию о событии, а не введенное пользователем значение.

Я бы зарегистрировался для пользовательского аргумента и передал someData другим способом.

ClientScript.RegisterForEventValidation(clientIdOfSomeButton, "CustomEvent");

И на клиенте

Html

<input name="customArgument" type="hidden" value="" />

Javascript

document.forms[0].customArgument = someData;
__doPostBack(clientIdOfSomeButton, '');

, затем получите ваше значение

if(Request["__EVENTARGUMENT"] == "customArgument")
{
   var customArgument = Request["customArgument"]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...