我正在实现一个基于角色的菜单。我必须从数据库动态生成菜单。我有一个角色特征映射表,从中我可以获取映射到角色的特征。一旦我得到它,我必须with <ul> and <li>
生成HTML菜单。我可以得到有关如何完成的建议吗?我的意思是在控制器中生成 HTML 脚本并将其渲染到相应的视图上。请帮忙。欢迎任何建议。
<ul id="menu">
<li>
@Html.ActionLink("Home", "Dashboard", "User")
</li>
<li>
<a href="#"><span>User</span></a>
<ul>
<li>@Html.ActionLink("Create User", "CreateUser", "User")</li>
</ul>
</li>
<li>
<a href="#"><span>Report</span></a>
<ul>
<li>@Html.ActionLink("ABC Report", "ABC", "Report")</li>
<li>@Html.ActionLink("User Report", "UserReport", "Report")</li>
</ul>
</li>
<li>
<a href="#"><span>XYZ</span></a>
<ul>
<li>@Html.ActionLink("XYZ1", "XYZ1", "XYZ")</li>
<li>@Html.ActionLink("XYZ2", "XYZ2", "XYZ")</li>
<li>@Html.ActionLink("XYZ3", "XYZ3", "XYZ")</li>
<li>@Html.ActionLink("XYZ4", "XYZ4", "XYZ")</li>
</ul>
</li>
</ul>
在 HTML 上方,我必须在控制器中构建并呈现到视图。
我建议创建一个Menu
类,如下所示
public class Menu
{
public string Text {get;set;}
public string Controller {get;set;}
public string Action {get;set;}
}
然后在viewModel
中添加类型为 List<Menu>
的属性MenuList
,然后从数据库中动态填充控制器中的该集合
然后更改您的视图,如下所示
<a href="#"><span>XYZ</span></a>
<ul>
@for(var menu in Model.MenuList)
{
<li>@Html.ActionLink(menu.Text, menu.Action, menu.Controller)</li>
}
</ul>