Как (если вообще) можно заставить ASP.NET UserControl наследовать от другого UserControl? - PullRequest
11 голосов
/ 12 марта 2009

В Windows Forms легко наследовать один пользовательский элемент управления от другого. Унаследованный элемент управления содержит все элементы управления родительской формы, и вы можете добавить еще несколько. Можно ли сделать то же самое с ASP.NET? Я говорю о пользовательских элементах управления .ASCX.

Ответы [ 3 ]

14 голосов
/ 12 марта 2009

Короткий ответ: нет, это не может быть легко сделано. Там нет наследования между пользовательскими элементами управления или веб-формами. Вы можете создать иерархию наследования между кодами за классами, но компоненты графического интерфейса не наследуются.

4 голосов
/ 12 марта 2009

Разница между примером форм Windows и примером веб-форм заключается в том, что элемент управления имеет теговую часть. Я полагаю, что когда-нибудь это можно будет преодолеть, поскольку веб-приложения компилируют все (по крайней мере, в некоторых случаях), но сегодня это не так.

Однако вы можете добавить пользовательский элемент управления к другому пользовательскому элементу управления, до тошноты. Это не даст вам наследства, но позволит вам украсить конкретный элемент управления дополнительными элементами управления, создав композицию из исходного элемента управления и того, что вам нужно добавить к нему. Это может решить вашу проблему?

3 голосов
/ 12 марта 2009

Вы, конечно, можете унаследовать базовый пользовательский элемент управления в коде и вставить свои дополнительные элементы управления в код; если вы говорите о построении в визуальном конструкторе, то я не уверен. Мне известно о создании составных элементов управления из элементов управления system.web и пользовательских элементов управления, поэтому нет причин, по которым ваш новый элемент управления не может содержать другой пользовательский элемент управления с добавленными вокруг него дополнительными элементами управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...