2011-04-04 58 views
1

我已經集成了ASP.NET和ASP.NET MVC在單個項目中一起工作。這裏我必須使用一些常用的控件,如:MENU控件。這些菜單必須從數據庫動態填充。在jQuery的幫助下,通過填充數據庫中的細節,可以在div中創建菜單嗎?如何爲ASP.NET和ASP.NET MVC創建通用菜單控件?

如何創建ASP.NET和ASP.NET MVC共同菜單控制?任何建議,將不勝感激。

回答

2
  • 獲取數據。
  • 數據轉換成JSON格式
  • 獲取jQuery來獲取JSON數據。
  • 使用客戶端模板來呈現你的菜單。
0

你看着TreeView控件與菜單?從服務器

+0

我可以使用樹狀視圖在ASP.NET和ASP.NET MVC的菜單嗎?如何將數據庫中的數據綁定到此菜單? – nimi 2011-04-04 15:47:01

1

最近我已經轉移到ASP.NET MVC和我也有興趣,如何創建菜單。我發現只有一個合適的幫助(http://www.asp.net/mvc/tutorials/providing-website-navigation-with-sitemaps-cs)。本教程使用Web.sitemap創建菜單。 但是,如果您嘗試使用此幫助創建菜單,則會看到它不適用於「更多級別」菜單。所以我修改了這段代碼並創建了這個。

using System.Text; 
using System.Web; 
using System.Web.Mvc; 

public static class MenuHelper 
{ 
    public static MvcHtmlString Menu(this HtmlHelper helper) 
    { 
     var sb = new StringBuilder(); 
     sb.Append("<div id='menu'><ul>"); 

     var topLevelNodes = SiteMap.RootNode.ChildNodes; 

     foreach (SiteMapNode node in topLevelNodes) 
     { 
      sb.AppendLine(SiteMap.CurrentNode == node ? "<li class='selectedMenuItem'>" : "<li>"); 

      sb.AppendFormat("<a href='{0}'>{1}</a>", node.Url, helper.Encode(node.Title)); 

      BuildMenu(sb, node); 

      sb.AppendLine("</li>"); 
     } 

     sb.AppendLine("</ul></div>"); 

     return MvcHtmlString.Create(sb.ToString()); 
    } 

    private static StringBuilder BuildMenu(StringBuilder sb, SiteMapNode node) 
    { 
     if (node.ChildNodes.Count != 0) 
     { 
      sb.Append("<ul>"); 
      foreach (SiteMapNode childNode in node.ChildNodes) 
      { 
       sb.AppendLine(SiteMap.CurrentNode == childNode ? "<li class='selectedMenuItem'>" : "<li>"); 

       sb.AppendFormat("<a href='{0}'>{1}</a>", childNode.Url, childNode.Title); 

       BuildMenu(sb, childNode); 

       sb.AppendLine("</li>"); 
      } 

      sb.AppendLine("</ul>"); 
     } 

     return sb; 
    } 
} 

在查看你只寫@Html.Menu()請記住創建Web.sitemap並插入頁面。希望它有幫助!