On m'a demandé de mettre à jour le menu sur un site Web que nous maintenons. Le site utilise Castle Windors Monorail et NVelocity comme modèle. Le menu est actuellement rendu en utilisant des sous-classes personnalisées de ViewComponent, qui rendent les éléments li. Pour l'instant il n'y a qu'un seul niveau (horizontal), donc le mécanisme actuel est bien.Comment créer des ViewComponents imbriqués dans Monorail et NVelocity?
J'ai été invité à ajouter des menus déroulants à certains des menus existants. Comme c'est la première fois que j'ai vu Monorail et NVelocity, je suis un peu perdu.
Ce qui existe actuellement:
<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>
Est-il possible d'avoir MenuComponents imbriquées (ou un nouveau SubMenuComponent) quelque chose comme:
<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>
Je dois tirer le sous-menu (éléments ul et li) à l'intérieur de la méthode Render substituée sur MenuComponent, l'utilisation de dérivés ViewComponent imbriqués peut ne pas fonctionner. Je voudrais une méthode garder la méthode fondamentalement déclarative pour créer des menus, si possible.
edit: Je peux utiliser Context.RenderBody() pour rendre les dérivés ViewComponent imbriqués, mais ils sont rendus avant le parent. Je suppose que le déchirement des sous-menus doit en quelque sorte s'accrocher dans la même sortie que le parent?