Меня попросили обновить меню на веб-сайте, который мы поддерживаем. На веб-сайте в качестве шаблона используется Monorail Castle Windors и NVelocity. Меню в настоящее время отображается с использованием пользовательских подклассов ViewComponent, которые отображают элементы li. На данный момент существует только один (горизонтальный) уровень, поэтому текущий механизм в порядке.Как создать вложенные компоненты ViewComponents в монорельсе и NVelocity?
Мне было предложено добавить выпадающие меню в некоторые из существующих меню. Поскольку это первый раз, когда я видел 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>
Можно ли иметь вложенные MenuComponents (или новый SubMenuComponent) что-то вроде:
<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>
Мне нужно сделать субменю (ул и литиево элементы) внутри переопределенного метода Render на MenuComponent, поэтому использование вложенных производных данных ViewComponent может не работать. Я хотел бы, чтобы метод содержал в основном декларативный метод для создания меню, если это вообще возможно.
Редактировать: Я могу использовать Context.RenderBody() для визуализации вложенных производных данных ViewComponent, но они отображаются перед родителем. Я предполагаю, что размывание подменю должно каким-то образом входить в тот же результат, что и родитель?