我想做这样的事。。。
<vc:sidebar-submenu id=@configurationId>
<vc:sidebar-submenu-item action-name="Index" controller-name="MapDefinitions" text="Map Definitions" />
<vc:sidebar-submenu-item action-name="Index" controller-name="Nodes" text="Nodes" />
<vc:sidebar-submenu-item action-name="SOIIndex" controller-name="SOIHome" text="Signals of Interest" requires-web-role-authorization=true />
<vc:sidebar-submenu-item action-name="Home" controller-name="ProtectedFrequency" text="Protected Frequencies" />
</vc:sidebar-submenu>
边栏子菜单组件非常简单。
<div class="sidebar-submenu" [email protected]>
<ul>
</ul>
</div>
SidebarSubmenuItem组件也相当简单。
@{
string actualCurrentPage = Context.Request.Path.ToString().Split('/')[1];
}
<a class="nav-link dropdown-level @(actualCurrentPage == Model.ExpectedCurrentPage ? "active" : null)" [email protected]>
<div [email protected]>
<span>@Model.Text</span>
</div>
</a>
然而,当我测试这个时,实际上我放在视图组件“内部”的任何东西都不会出现。
基本上,我的问题是,有没有办法将HTML元素和/或其他视图组件嵌套在另一个视图组件中?
还是我试图以从未设计过的方式使用视图组件?
我想,如果你的顶级组件有几个“叶节点”,嵌套项可能会落在那里,这会变得很混乱。。。然而,在我的例子中,只有一个“叶节点”(空元素)。
这一切都是为了减少代码重复,并比我们目前更好地维护UI代码。
在React中,这可能是一件非常容易的事情。。。
我尝试做的事情的明显替代方案是对div和ul元素进行“硬编码”,如下所示:
<div class="sidebar-submenu" [email protected]>
<ul>
<vc:sidebar-submenu-item action-name="Index" controller-name="MapDefinitions" text="Map Definitions" />
<vc:sidebar-submenu-item action-name="Index" controller-name="Nodes" text="Nodes" />
<vc:sidebar-submenu-item action-name="SOIIndex" controller-name="SOIHome" text="Signals of Interest" requires-web-role-authorization=true />
<vc:sidebar-submenu-item action-name="Home" controller-name="ProtectedFrequency" text="Protected Frequencies" />
</ul>
</div>