В продолжение темы (я уже высказался о GridView и TreeView). Вот Микрософт сделала контрол ASP.Net меню. Столко писали... Уйма человеко/часов. Думали, разрабатывали архитектуру...
Но реально получился не продуманный, не расширяемый, практически бесполезный контрол. Это хороший пример того, как не нужно делать.
Начнем с того, что он генерирует невалидный HTML (я уже не говорю о том, что в избыточном кол-ве). Представители Микрософт видимо в то время об этом ничего не слышали. Узнали уже потом, и создали ControlAdapter практически для каждого стандартного контрола ASP.Net. Причем, поскольку контролы не предусматривают ОО расширения, адаптер -- это практически полностью переделанный контрол. И думаете адекватно работают эти адаптеры? Ага, ждите! В злополучном меню стили вообще игнорируются. Гораздо легче написать свой новый контрол и его использовать.