#c# #javascript #asp.net
#c# #javascript #asp.net
Вопрос:
Это будет легко для тех, кто знает, что они делают.
У меня есть кнопка запуска календаря, кнопка продолжения и текстовое поле даты. Кнопка запускает календарь JavaScript во всплывающем окне. Этот календарь возвращает дату в текстовое поле ReservationDate, используя:
window.opener.document.getElementById('ctl00_wpm_ShowProduct_ctl10_ReservationDate').value = '<%= CurrentDate %>';
Я знаю, это не элегантно, но работает. Проблема в том, что, хотя в браузере я вижу дату в поле, когда я нажимаю кнопку продолжить и пытаюсь получить к нему доступ из моего .NET-скрипта, серверный скрипт видит его как пустое.
Как мне сообщить серверу использовать текст, который браузер имеет в этом поле, которое он не видит?
Я знаю достаточно, чтобы понять, что это проблема на стороне сервера и на стороне клиента, но как мне преодолеть этот пробел?
Комментарии:
1. Есть ли у вас какой-либо другой код, который может перезаписывать это значение ранее в жизненном цикле страницы?
2. Если вы можете видеть текст в поле перед отправкой обратной передачи, то я думаю, что, вероятно, что-то не так в вашем коде. Вы, вероятно, не проверяете
IsPostBack
Можете ли вы также опубликовать этот код?3. @Chad, иначе он не смог бы скомпилировать, Он видит его как пустое, а не как существующее
4. Да, я собрал это вместе, когда перечитал и посмотрел на имя элемента управления.
5. было бы неплохо опубликовать ваш HTML-код, а также скрипт на стороне сервера. есть ли у вас runat =»server» в объявлении текстового поля? когда вы пытаетесь получить доступ к текстовому полю, найдено ли оно на сервере?
Ответ №1:
Я думаю, что вы установили свое текстовое поле как доступное только для чтения, и это, похоже, проблема. Установите его только для чтения следующим образом в коде за:
TextBox1.Attributes.Add("readonly", "readonly");
Проверьте это.
Комментарии:
1. Блестящий gbs! Меня сбило с толку то, что я мог видеть значение на экране и никогда не рассматривал его только для чтения. Спасибо вам за решение проблемы, которая сводит меня с ума на этой неделе… Я уверен, что на следующей неделе появится новое. 🙂
Ответ №2:
Если вы инициализируете значение в Page_Load, значение будет потеряно. Я предполагаю, что это должно быть что-то вроде этого.
Итак, вы бы написали в своем Page_Load:
if(!Page.IsPostBack)
{
Initialize();
}
Комментарии:
1. Я был бы готов поспорить, что это проблема. Хотя трудно сказать, не видя кода.