What is the best way to populate a menu control on a Master Page?数据库?页面变量?枚举? 我正在这里寻求意见。 为此目的而构建的ASP.NET Sitemap功能在许多情况下都可以很好地工作。如果您希望菜单与站点地图看起来有所不同,请采取以下解决方法。 如果您具有动态站点结构,则可以创建自定义站点地图提供程序。您可能会遇到麻烦多于其价值的问题,但是通常从站点地图填充菜单会为您提供一些不错的功能,例如安全修整,其中菜单选项适用于登录用户。 这是一个有趣的问题,有很多解决方法。 您可以从XML加载菜单结构,这就是内置ASP.NET导航控件/"站点地图"设置的方式。总体上来说,这可能是一个不错的选择,并且在Visual Studio中有相当好的工具。 如果它是一个动态菜单,需要进行很多更改,那么从数据库中获取项目可能是一个好主意,但是您肯定要缓存它们,因此DB不会在每个页面渲染时都被命中。<铅> 我已经使用ASP.NET登录控件和表单身份验证为ASP.NET Web应用程序的成员资格/凭据创建了一个站点。我正在使用站点地图进行站点导航。 我有使用SiteMapDataSource填充的ASP.NET TreeView和Menu导航控件。但是非管理员用户可以看到仅限管理员使用的页面。 我创建了一个web.sitemap网站地图文件。然后,我使用ASP.NET网站管理工具来设置访问规则。 我在.master页上添加了导航控件...
我在我的web.config文件中将securityTrimmingEnabled设置为" true" ...
我在文件后面的master.vb代码中调整了树...
从用户的angular来看,有效访问是一项主要功能。 我们有类似的功能。 应用程序菜单从数据库加载到母版页上,因为可见的菜单选项取决于用户的权限。 数据库上的几个约定和巧妙的结构确保了菜单加载代码是通用的,并在选择了某个菜单选项后自动导航到正确的屏幕。我们使用UIP进行导航,使用ComponentArt进行Web控件。 BTW ComponentArt很烂。再说一次,我想所有第三方控制库都可以。 这完全取决于网站的工作方式。我与大多数人都同意,站点地图通常是最好的方法。但是,如果您使用的是CMS,则可能需要将其保留在数据库中。如果您有一个以分类法为中心的站点,请使用分类法构建菜单。没有"最佳方法"进行导航,只有针对给定情况的最佳方法。 绑定到站点地图当然是最简单的。 如果菜单是针对每个用户的动态菜单,则您必须为每个用户访问数据库。从那时起,我可能会将其存储在会话中,以避免将来往返数据库。 如果它是动态的,但是整个站点看到相同的项目,则将其放入数据库中并缓存结果 |