从数据库填充菜单

时间:2009-08-01 11:44:24

标签: c# asp.net sql-server

我需要从数据库(具有n个子类别级别的类别)填充具有层次结构的ASP.NET菜单控件,其中菜单项可以不断更改。

有一些方法,我想知道哪一个是最有效的方法。

我有这些想法:

  1. 从数据库中检索数据并将其转换为xml,然后使用自定义XSLT文件对其进行转换并将其绑定到Menu控件
  2. 从数据库中检索数据并循环(递归),将菜单项和子项插入菜单控件
  3. SQL站点地图提供程序(感谢Made4Print)
  4. 别的什么?

3 个答案:

答案 0 :(得分:3)

ASP.NET菜单控件可以通过SiteMapDataSource使用.SiteMap文件。

您可以实现自己的SiteMapProvider,这样您就可以在您的数据库中使用SiteMap层次结构并连接相同的组件,从而使事情变得更加动态。

以下是一个示例:http://weblogs.asp.net/scottgu/archive/2006/01/11/435108.aspx

HTH

答案 1 :(得分:1)

如果你想这样做,我肯定会推荐选项2,因为它包含一个小于选项1的转换级别。如果你已经遍历菜单项和它们的hiearchies,你也可以建立菜单项和subitems直接 - 我没有看到绕过XML然后通过XSLT进入菜单结构的任何大的好处,真的。

马克

PS:如果站点地图结构和选项对您来说足够好(通常应该是这样),则选项3(SQL站点地图提供程序)听起来也是一个非常好的主意。我可能会首先尝试这个选项,然后从那里开始。

答案 2 :(得分:1)

我同意马克。然后,您可以将所有内容打包到服务器控件中以获得可重用性。将所有内容转换为XML然后使用XSLT以某种方式“转换”它似乎是我的开销。