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

Я использую

__doPostBack(clientIdOfSomeButton, someData);

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

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

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

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

1 ответ

Решение

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

Я хотел бы зарегистрироваться для пользовательского аргумента и передать 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"]
}
Другие вопросы по тегам