Asp.net mvc ASP.NET MVC–;数据库驱动菜单
我有一个数据库菜单结构,我想将其添加到site.master文件中 我已经研究了StackOverflow的其他问题,但无法在我的网站上实现 如何将用户控件添加到Site.Master文件 Menu.ascxAsp.net mvc ASP.NET MVC–;数据库驱动菜单,asp.net-mvc,menu,Asp.net Mvc,Menu,我有一个数据库菜单结构,我想将其添加到site.master文件中 我已经研究了StackOverflow的其他问题,但无法在我的网站上实现 如何将用户控件添加到Site.Master文件 Menu.ascx <%foreach (MainMenuSort mainMenuSort in (List<MainMenuSort>)ViewData["MainMenuSortListDisplay"]) { %> <li><%=
<%foreach (MainMenuSort mainMenuSort in (List<MainMenuSort>)ViewData["MainMenuSortListDisplay"])
{ %>
<li><%= Html.Encode(mainMenuSort.MainMenuId.MainMenuName)%></li>
<%foreach (SubMenuSort subMenuSort in (List<SubMenuSort>)ViewData["SubMenuSortListDisplay"])
{%>
<%if (mainMenuSort.MainMenuId.Id == subMenuSort.SubMenuId.MainMenu.Id)
{ %>
<li><%= Html.Encode(subMenuSort.SubMenuId.SubMenuName)%></li>
<%} %>
<%} %>
<%}%>
您需要在母版页中使用Html.RenderPartial方法
在调用使用母版页的视图的任何操作中,都需要设置MainMenuSortListDisplay和SubMenuSortListDisplay视图数据键
在你的主人使用这个
<% Html.RenderPartial("~/Views/Shared/Menu.ascx");
设置此键后,母版页可以使用RenderPartial的重载,如下所示
<% Html.RenderPartial(
"~/View/Shared/Menu.ascx",
(MenuModel)ViewData["MenuPartialData"]); %>
这假设您的分部是MenuModel类的强类型。然后在部分中,您可以使用稍微重写代码的模型
<% foreach (MainMenuSort mainMenuSort in Model.OuterList) { %>
<li><%= Html.Encode(mainMenuSort.MainMenuId.MainMenuName)%></li>
<% foreach (SubMenuSort subMenuSort in Model.InnerList) {%>
<%if (mainMenuSort.MainMenuId.Id == subMenuSort.SubMenuId.MainMenu.Id)
{ %>
<li><%= Html.Encode(subMenuSort.SubMenuId.SubMenuName)%></li>
<%} %>
<%} %>
<%}%>
希望这对你有所帮助
<% Html.RenderPartial("Menu") %>
编辑:更正了一个输入错误你也可以作为一个HTMLHelper来做,在母版中只需调用。然后,在HTMLHelper中,您拥有获取数据库记录并循环使用它们的代码。这是我找到的一个帮助你开始的方法。请注意我的评论,因为提供的代码示例中有一个bug。我仍然在处理菜单的子项时遇到问题,我想我需要一个递归函数或其他东西???借助于此。我可以在site.master页中显示菜单。谢谢。正在学习ASP.NET MVC,并已添加到site.master页,但不理解您的意思:“您需要在调用使用母版页的视图的任何操作中设置MainMenuSortListDisplay和SubMenu ListDisplay视图数据键。”您可以在控制器类中使用ActionResult方法调用该页。在此方法中,您需要设置ViewData键,例如ViewData[“SubMenuSortListDisplay”]=SomeListPreferly,如果您仍然卡住,请返回:-)抱歉,仍然无法显示菜单。你可以发布任何链接到示例代码吗?谢谢。谢谢你发布示例代码。菜单现在显示在site.master页中。我在Site.master页面中使用了一个部分请求,并遵循该请求。谢谢。谢谢你发布这个链接。我使用了部分请求,并遵循
<% foreach (MainMenuSort mainMenuSort in Model.OuterList) { %>
<li><%= Html.Encode(mainMenuSort.MainMenuId.MainMenuName)%></li>
<% foreach (SubMenuSort subMenuSort in Model.InnerList) {%>
<%if (mainMenuSort.MainMenuId.Id == subMenuSort.SubMenuId.MainMenu.Id)
{ %>
<li><%= Html.Encode(subMenuSort.SubMenuId.SubMenuName)%></li>
<%} %>
<%} %>
<%}%>
<% Html.RenderPartial("Menu") %>