ASP.NET-如何从数据库高效地创建动态用户特定菜单



这是我第一次在StackOverflow上发帖,但这个网站太棒了。提前感谢您所能提供的任何帮助。

我有一个网站,允许用户根据权限访问不同的页面,因此每个用户在登录时都需要动态生成菜单。然而,用户的选项可能不会经常更改。

该网站目前有一个母版页,它从数据库中提取页面列表并构建菜单。每次用户加载页面时,它都会执行此操作。

我想减少对数据库的调用,所以开始将菜单数据放入Session变量中。我希望有更有经验的人能帮助我,确保这是最好的方法。我想我更喜欢把它存储在用户的机器上,而不是服务器上。

我有这是我的主页加载:

User u = new User(Page.User.Identity.Name, Globals.getCnString());
        DataTable menu;
        if(Session["MENU"] == null)
        {
            Session["MENU"] = u.getMenu();
        }
        menu = (DataTable)Session["MENU"];
        foreach (DataRow r in menu.Rows)
        {
           //build menu code here.
        }

再次感谢!

如果用户的选项不会经常更改,为什么不只在发生更改时构建菜单,将其保存在用户的配置文件表中(以html格式),并将其传递给母版页中的文字控件,而不是菜单,这样就不会将其存储在用户的机器上(不建议用于网站)。

创建一个包含URL列表的XML文件。对于每个URL元素,添加一个权限属性,并以此为基础确定每个链接的可见性。

最新更新