Как заставить пользовательский элемент управления частичными классами знать элементы управления, объявленные в базовом классе? - PullRequest
5 голосов
/ 05 марта 2010

Нужно ли делать что-то особенное, чтобы частичные классы ASP.NET знали об элементах управления, объявленных в базовых классах нашего пользовательского элемента управления? Частичные классы продолжают генерировать объявления для элементов управления в базовом классе, которые означают, что элементы управления в базовом классе скрыты и имеют значение null.

1 Ответ

6 голосов
/ 08 марта 2010

Атрибут CodeFileBaseClass можно применить к @ Page или @ Control объявлениям, чтобы среда выполнения ASP.NET знала о любых элементах управления, объявленных в базовом классе.

MSDN описывает это следующим образом:

Указывает имя типа базового класса для страницы и связанного с ней класса code-behind.

Этот атрибут является необязательным, но когда этоИспользуемый атрибут CodeFile также должен присутствовать.Используйте этот атрибут, когда вы хотите реализовать общий сценарий, в котором вы определяете общие поля (и, возможно, связанные события) в базовом классе для ссылки на элементы управления, объявленные на веб-странице.Из-за модели генерации кода ASP.NET, если вы определили поля в базовом классе без использования этого атрибута, во время компиляции будут генерироваться новые определения членов для элементов управления, объявленных на веб-странице (в рамках отдельной частичной заглушки класса),и ваш желаемый сценарий не будет работать.Но если вы используете атрибут CodeFileBaseClass, чтобы связать базовый класс со страницей, и вы делаете свой частичный класс (его имя присваивается атрибуту Inherits и его исходный файл, на который ссылается атрибут CodeFile) наследуемым от базового класса, тогдаПоля в базовом классе смогут ссылаться на элементы управления на странице после генерации кода .

...