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

标签 asp.net session caching optimization

这是我第一次在 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 格式),并将其传递给母版页中的文字控件而不是菜单,这样您就不会将其存储在用户的机器上(不推荐用于网站)。

关于ASP.NET - 如何从数据库有效地创建动态用户特定菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9960750/

相关文章:

c# - 如何逐行解析来自文本区域的用户输入

asp.net - 使用 ASP.NET 发送 SMS 消息

c# - 如何检查 Razor 模板中的模型中的属性是否可用?

使用sql server模式的asp.net session

php - 创建我们自己的 session 处理程序

java - getHibernateTemplate().setCacheQueries() 应该如何正确使用?

java - 如何处理@ViewScoped页面中的 'cached'实例?

c# - 将公共(public)属性用于内部和公共(public)使用还是分开使用?

php - 在 Session 中设置用户 id 或用户名安全吗?

ios - 翠鸟中奇怪的 RAM 行为