значение, установленное javascript, не сохраняется в asp.net - PullRequest
2 голосов
/ 18 февраля 2010

У меня есть два текстовых поля и метка в элементе управления gridview, я добавляю функцию javascript во второй атрибут события onblur текстового поля и отображаю результат в метке, функция работает нормально, и результат отображается в метке, но когда я сохраняю данные сетки в базу данных, метка возвращается 0 или пустая, но я могу видеть значение, как это преодолеть.

спасибо и всего наилучшего

Ответы [ 2 ]

4 голосов
/ 18 февраля 2010

Ваша метка не сохраняется в ViewState, потому что она не состоит из элемента управления «Форма». Вы можете использовать скрытое текстовое поле, чтобы достичь этого, возможно, есть лучшие способы.

3 голосов
/ 18 февраля 2010

Вот ссылка, которая отвечает на ваш вопрос.

http://www.mikesdotnetting.com/Article/65/ViewState-form-fields-labels-and-Javascript

Если я правильно понимаю (пожалуйста, исправьте меня, если я ошибаюсь), это IPostBackDataHandler ( дополнительная информация ), которая обрабатывает данные в элементе управления поля ввода сервера, когда они были изменены клиентом (Javascript).Элемент управления меткой не является полем ввода, поэтому сделанные в клиенте изменения не сохраняются.

Вот цитата из приведенной выше ссылки:

Задача ViewState - управлять любыми изменениями вначальное состояние серверных элементов управления, если эти изменения производятся программно на сервере или если изменения, сделанные в результате взаимодействия с пользователем, передаются на сервер.Это не включает восстановление значений входных данных формы, таких как TextBoxes или выбранного элемента в CheckBox.Существует распространенное заблуждение, что значения форм управляются ViewState.Они не.Никогда не было.Эти значения управляются и восстанавливаются исключительно с помощью IPostBackDataHandler.

IPostBackDataHandler - это большая находка для веб-разработчиков, которые были воспитаны на других серверных технологиях, таких как классический ASP, PHP и т. Д.Раньше нам приходилось вручную подключать каждое поле формы для отображения первоначально отправленного значения, чтобы у пользователя не было пустой формы для повторного заполнения, если она не прошла проверку на стороне сервера.IPostBackDataHandler означает, что нам никогда не придется делать это снова.

Как уже упоминалось в другом ответе, использование скрытого значения для хранения изменений, внесенных в JavaScript, должно работать.

...