Как динамически добавлять элементы меню на главную страницу в приложении ASP.NET 3.5 MVC

Я хочу динамически добавлять элементы меню на мою главную страницу на основе роли входа в систему безопасности членства. Из того, что я прочитал, RenderAction на главной странице html, возможно, мог бы это сделать. Поскольку я возился с этим, я не уверен, как это будет выглядеть и как в контроллере я проверяю свою текущую роль. Я подумываю создать таблицу и связать допустимые элементы меню с ролевыми отношениями, чтобы я мог перейти на главную страницу для визуализации элементов динамического меню.


person MikeD    schedule 22.10.2008    source источник


Ответы (3)


В контроллере я бы создал класс MenuModel или что-то подобное, это модель вашего меню. Это будет класс только для данных. Создайте и заполните его в контроллере с учетом прав доступа текущего пользователя. Это позволит вам писать модульные тесты, которые проверяют правильный код безопасности.

Затем я передал бы это представлению через ViewData. Я бы совмещал это со вспомогательным методом, который знает, как отображать меню на основе класса MenuModel.

person Haacked    schedule 23.10.2008

Я не уверен, что это то, что вы ищете, но несколько недель назад у меня был такой же вопрос:

Застрял при создании метода расширения html.ActionLink с обрезкой безопасности

Это позволило мне расширить меню на главной странице (или любой другой странице), управляя доступом к элементам меню с помощью атрибута Authorize:

Вот мой код для выполнения это.

person Robert Dean    schedule 23.10.2008

Если эти «роли» являются ролями членства в ASP.NET, то вы можете использовать обычный элемент управления LoginView с тегом RoleGroup. Я обнаружил, что он отлично работает в MVC. Если «роли» отличаются (например, что-то в вашей модели), то делайте то, что пишет Хаакед.

person Craig Stuntz    schedule 23.10.2008