Значение, установленное javascript, не сохраняется в asp.net
У меня есть два текстовых поля и метка в элементе управления gridview, я добавляю функцию javascript во второй атрибут события onblur текстового поля и отображаю результат в метке, функция работает нормально, и результат отображается в метке, но когда я Сохраняя данные сетки в базу данных, метка возвращается 0 или пусто, но я могу видеть значение, как это преодолеть.
спасибо и всего наилучшего
2 ответа
Ваша метка не сохраняется в ViewState, потому что она не состоит из элемента управления "Форма". Вы можете использовать скрытое текстовое поле, чтобы сделать это, возможно, есть лучшие способы.
Вот ссылка, которая отвечает на ваш вопрос.
http://www.mikesdotnetting.com/Article/65/ViewState-form-fields-labels-and-Javascript
Если я правильно понимаю (пожалуйста, исправьте меня, если я ошибаюсь), именно IPostBackDataHandler ( дополнительная информация) обрабатывает данные в элементе управления поля ввода сервера, когда они были изменены клиентом (Javascript). Элемент управления меткой не является полем ввода, поэтому изменения, сделанные в клиенте, не сохраняются.
Вот цитата из ссылки выше:
Задача ViewState - управлять любыми изменениями исходного состояния серверных элементов управления, если эти изменения производятся программно на сервере или если изменения, сделанные в результате взаимодействия с пользователем, передаются на сервер. Это не включает восстановление значений входных данных формы, таких как TextBoxes или выбранного элемента в CheckBox. Существует распространенное заблуждение, что значения форм управляются ViewState. Они не. Никогда не было. Эти значения управляются и восстанавливаются исключительно с помощью IPostBackDataHandler.
IPostBackDataHandler - это большая находка для веб-разработчиков, которые были воспитаны на других серверных технологиях, таких как классический ASP, PHP и т. Д. В старые времена нам приходилось вручную подключать каждое поле формы для отображения первоначально опубликованных сообщений. значение, чтобы пользователь не получил пустую форму для повторного заполнения, если он не прошел проверку на стороне сервера. IPostBackDataHandler означает, что нам никогда не придется делать это снова.
Как уже упоминалось в другом ответе, использование скрытого значения для хранения изменений, внесенных Javascript, должно работать.