ASP.NET:JavaScript, изменяющий значение скрытого поля перед отправкой

StackOverflow https://stackoverflow.com/questions/1438541

Вопрос

Я рассматривал похожие вопросы о переполнении стека, но не смог найти решение этой конкретной проблемы.У меня есть простая (не совсем, но давайте представим) ASP.NET страница с панелью обновления внутри нее.

На этой панели обновления есть HiddenField элемент управления со значением, которое будет установлено / обновлено с помощью моего собственного пользовательского JavaScript.Значение является обновлено, как я вижу в DOM, с использованием Firebug.

Рядом с этим HiddenField существует LinkButton который вызывает JavaScript для изменения значения HiddenField используя OnClientClick (это работает).Тот Самый LinkButton также имеет OnClick обработчик, который выполняется после изменения значения.

Однако, в OnClick обработчик, я получаю начальное значение HiddenField а не то значение, которое было задано JavaScript!

Почему это происходит?Это тот случай , когда "ПЕБКАЧ"?

Редактировать: Попробовал проделать то же самое с TextBox без всякого успеха.Также пробовал изменять значение вручную с помощью Firebug перед отправкой формы, но безуспешно.

ПРАВКА 2: Я только что понял , что Page_Load вызывается перед OnClick обработчик, который все портил.Я не буду удалять этот вопрос, поскольку у других людей может возникнуть такая же проблема, и они могут посчитать этот вопрос ценным.

Это было полезно?

Решение

Вам нужно будет сделать это с помощью события EndRequestHandler, предоставляемого панелью обновления AJAX.

Пожалуйста, взгляните на это...>

http://www.codeproject.com/KB/ajax/AfterAjaxUpdate.aspx?display=Print

Другие советы

Мне кажется, что viewstate разыгрывает с вами плохую шутку (как это часто бывает).Я предполагаю, что при возврате страницы скрытое поле инициализируется значением, содержащимся в Viewstate.

Попробуй что-нибудь одно:Не обращайтесь к значению напрямую через yourHiddenField.Value но в начале вашей страницы получите это с помощью Request.Forms[yourHiddenField.UniqueId] и приведите его к скрытому полю и извлеките значение.Я не уверен, правильный ли это синтаксис."Опубликованные" значения должны быть где-то в объекте запроса, если я правильно помню.Посмотрите, получите ли вы там нужное значение.Если вы получите это там, проблема заключается в viewstate, который отображается обратно после события OnInit страницы.Тогда мы должны найти решение для этого...

Как вы генерируете новые входные данные на клиенте?Можно ли было бы выполнить это вместо этого на сервере?

Таким образом, вы можете использовать только OnClick вместо того и другого OnClick и OnClientClick.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top