ASP.NET Текстовое поле, обновленное с помощью Javascript, не просматривается

#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. Я был бы готов поспорить, что это проблема. Хотя трудно сказать, не видя кода.