Я читал в MSDN InamingContainer, интерфейс маркера для создания уникального имени. Когда это действительно необходимо?
Откровенно говоря, это требуется, когда у вашего элемента управления есть дочерний элемент с id. Если вы можете использовать несколько экземпляров вашего элемента управления на одной странице, вы должны пометить ваш элемент управления интерфейсом INamingContainer
. Это наиболее подходящий сценарий для CompositeControls
, поэтому по умолчанию он имеет производный INamingContainer
.
Любой элемент управления, реализующий этот интерфейс, создает новое пространство имен в котором все идентификационные атрибуты дочерних элементов управления гарантированно уникальны в пределах всего приложения. Маркер предоставляемый этим интерфейсом, позволяет уникальное именование динамически сгенерированных экземпляров элементов управления сервера внутри элементов управления веб-сервера, которые поддерживают привязку данных. Эти элементы управления включают Repeater, DataGrid, DataList, CheckBoxList, ChangePassword, LoginView, Menu, SiteMapNodeItem и RadioButtonList элементы управления.
Когда вы разрабатываете шаблонные элементы управления, вы должны реализовать этот интерфейс, чтобы чтобы избежать конфликтов имен на странице.