2010-03-05 3 views
5

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

ответ

6

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

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

Задает имя типа базового класса для страницы и связанного с ним фоновым кодом класса.

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