ASP.NET - Как эффективно создать динамическое пользовательское меню из базы данных - PullRequest
5 голосов
/ 01 апреля 2012

это мой первый пост на 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.
        }

Еще раз спасибо!

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Если параметры пользователя не будут меняться очень часто , почему бы вам не создать меню только тогда, когда произошло изменение, сохранить его в таблице профиля пользователя (в формате html) и передать его буквенный элемент управления на главной странице вместо меню, поэтому вы не будете хранить его на компьютере пользователя (что не рекомендуется для веб-сайта).

0 голосов
/ 01 апреля 2012

Создайте файл XML со списком URL.Для каждого элемента URL добавьте атрибут для разрешений и основывайте видимость каждой ссылки на этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...