Иногда я отчаиваюсь при работе с ASP.Net - еще одна проблема, которой не должно быть!Доступ к ClientID прерывает обратную передачу
В веб-форме есть таблица 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);
Это само по себе не является э-э-э-э, но тот факт, что он нарушает обратную передачу, делает! Если вы введете что-то в это текстовое поле и нажмите кнопку отправки (есть кнопка отправки на странице!), Она перезагружает страницу, но возвращает значение по умолчанию в текстовое поле и полностью игнорирует то, что вы изначально имели. Безумие - я не делал ничего особенно странного и необычного, так почему же он сломал обратную передачу?
Если я правильно понимаю, свойство ClientID для текстового поля первоначально является ctl00_BodyPlaceHolder_myControl_myTextBox, но после обратной передачи ClientID теперь является myControl_myTextBox для текстового поля? –
Не жалко, если я получаю доступ к свойству ClientID, идентификатор выходит из myControl_myTextBox, но если я прокомментирую эту строку, id выйдет ctl00_BodyPlaceHolder_myControl_myTextBox - я отредактирую вопрос, чтобы отразить это значение – Paul
jsBuilder.AppendFormat (@ "var filter = new TBFilter ($ ("" # {0} "") [0]); ", myTextBox.ClientID); – Paul