Иногда я отчаиваюсь при работе с ASP.Net - еще одна проблема, которой не должно быть!
На веб-форме есть таблица ASP. В таблице ASP есть пользовательский элемент управления, в который я делаю некоторые изменения. В таблице ASP есть текстовое поле .... пока что ничего необычного!
В коде позади, как часть Page_Load, мне нужно получить доступ к ClientID текстового поля, чтобы зарегистрировать некоторый javascript ... так что я делаю, и javascript, кажется, делает все, что ему нужно. Все счастливы.
Нет, нет, видимо, все недовольны, сам ASP.Net очень недоволен!
При доступе к ClientID идентификатор, который появляется в источнике:
myControl_myTextBox
комментирование строки, которая обращается к ClientID, означает, что идентификатор отображается как:
ctl00_BodyPlaceHolder_myControl_myTextBox
Строка, которая обращается к ClientID, выглядит следующим образом:
jsBuilder.AppendFormat(@"var filter = new TBFilter($(""#{0}"")[0]);", myTextBox.ClientID);
Это само по себе не беспокоит меня, но тот факт, что он нарушает обратную передачу, делает! Если вы введете что-то в это текстовое поле и нажмете кнопку «Отправить» (на странице есть кнопка «Отправить»), она перезагрузит страницу, но вернет значение по умолчанию обратно в текстовое поле и полностью проигнорирует то, что было у вас изначально. Безумие - я не сделал ничего особенно странного и необычного, так почему же он сломал обратную передачу?