Клиентская часть веб-форм ASP.NET 4 с суффиксом `_0` - PullRequest
1 голос
/ 26 октября 2010

В прошлом году мы перенесли все наши новые функции в ASP.NET MVC.

Однако у нас все еще есть множество устаревших страниц WebForms с большим количеством кода JavaScript, и у нас не будет возможности обновить их в ближайшее время.

Совсем недавно мы также перешли на ASP.NET 4, и это, похоже, сломало загрузку кода JavaScript на этих старых страницах.

Где раньше идентификатор клиента был бы:

ctl001_masterControlName_panelControlName_controlWeWant

Теперь они стали:

ctl001_masterControlName_panelControlName_controlWeWant_0

Откуда взялся этот суффикс _0? В panelControlName есть только один controlWeWant, поэтому суффикс не добавляет значения.

Я знаю, что жестко закодированные идентификаторы клиентов - плохая идея для WebForms; одной из причин, по которой мы перешли на ASP.NET MVC, был ужасный HTML, созданный WebForms. Однако для этого унаследованного кода мы застряли с ним, и я бы не стал его менять (пока не настанет день, когда у нас будет свободное время, чтобы сделать это правильно).

Почему ASP.NET 4 вообще добавляет суффикс _0?

Можно ли его отключить?

Есть ли другой способ избежать этого?

1 Ответ

1 голос
/ 26 октября 2010

Извлечение Что нового в ASP.NET 4.0 - Генерация ClientID для более чистой разметки .Он объясняет некоторые новые функции в ASP.NET 4.0, когда дело доходит до генерации идентификатора.

...