Проверка события: разрешить __doPostBack для одного элемента управления и * любых * аргументов
Я использую
__doPostBack(clientIdOfSomeButton, someData);
создать PostBack в JavaScript. Проблема в том, что someData
заранее неизвестно, и проверка события начинается, потому что я не могу ClientScript.RegisterForEventValidation
каждое возможное значение someData
,
Пока что я вижу только две возможности решения этой проблемы:
- Отключите проверку события для страницы, что не рекомендуется по соображениям безопасности.
- Вместо того, чтобы передавать данные через проверку событий, поместите данные в какое-то скрытое текстовое поле через 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"]
}