Меня попросили обновить меню на поддерживаемом нами веб-сайте. Веб-сайт использует в качестве шаблона Castle Windors Monorail и NVelocity. В настоящее время меню отображается с использованием настраиваемых подклассов ViewComponent, которые отображают элементы li. На данный момент есть только один (горизонтальный) уровень, так что текущий механизм в порядке.
Меня попросили добавить раскрывающиеся меню к некоторым из существующих меню. Поскольку я впервые вижу Monorail и NVelocity, я немного растерялся.
Что в настоящее время существует:
<ul>
#component(MenuComponent with "title=Home" "hover=autoselect" "link=/")
#component(MenuComponent with "title=Videos" "hover=autoselect")
#component(MenuComponent with "title=VPS" "hover=autoselect" "link=/vps")
#component(MenuComponent with "title=Add-Ons" "hover=autoselect" "link=/addons")
#component(MenuComponent with "title=Hosting" "hover=autoselect" "link=/hosting")
#component(MenuComponent with "title=Support" "hover=autoselect" "link=/support")
#component(MenuComponent with "title=News" "hover=autoselect" "link=/news")
#component(MenuComponent with "title=Contact Us" "hover=autoselect" "link=/contact-us")
</ul>
Возможно ли иметь вложенные компоненты меню (или новый компонент подменю), например:
<ul>
#component(MenuComponent with "title=Home" "hover=autoselect" "link=/")
#component(MenuComponent with "title=Videos" "hover=autoselect")
#blockcomponent(MenuComponent with "title=VPS" "hover=autoselect" "link=/vps")
#component(SubMenuComponent with "title="Plans" "hover=autoselect" "link=/vps/plans")
#component(SubMenuComponent with "title="Operating Systems" "hover=autoselect" "link=/vps/os")
#component(SubMenuComponent with "title="Supported Applications" "hover=autoselect" "link=/vps/apps")
#end
#component(MenuComponent with "title=Add-Ons" "hover=autoselect" "link=/addons")
#component(MenuComponent with "title=Hosting" "hover=autoselect" "link=/hosting")
#component(MenuComponent with "title=Support" "hover=autoselect" "link=/support")
#component(MenuComponent with "title=News" "hover=autoselect" "link=/news")
#component(MenuComponent with "title=Contact Us" "hover=autoselect" "link=/contact-us")
</ul>
Мне нужно нарисовать подменю (элементы ul и li) внутри переопределенного метода Render в MenuComponent, поэтому использование вложенных производных ViewComponent может не работать. Я хотел бы, чтобы метод сохранял в основном декларативный метод создания меню, если это вообще возможно.
edit: я могу использовать Context.RenderBody () для рендеринга вложенных производных ViewComponent, но они отображаются раньше родителя. Я предполагаю, что отображение подменю должно каким-то образом подключаться к тому же выходу, что и родительский?