У меня есть несколько страниц с содержанием, которое актуально как для пользователей, вошедших в систему, так и для пользователей, не вошедших в систему. Например, страницы с контактной информацией, политиками конфиденциальности и т. Д. Все страницы имеют типичное меню навигации, но пользователи, которые вошли в систему, обычно видят другую строку меню навигации, чем пользователи, не вошедшие в систему.
Как лучше всего это сделать в ASP.net?
Пока возможные решения включают следующее:
- Отображение содержимого во всплывающем окне. На странице не будет меню, это просто базовая страница, не требующая проверки, какой тип пользователя ее видит.
- Программное изменение главной страницы в зависимости от того, аутентифицирован пользователь или нет. Однако на одной из главных страниц есть некоторые переменные, к которым необходимо получить доступ, но не затрагиваемые пользователями, не вошедшими в систему.
- Помещение содержимого в пользовательский элемент управления и размещение этого пользовательского элемента управления на двух отдельных страницах для отображения соответствующему пользователю.
На самом деле я не фанат №1, потому что у пользователей, посещающих сайт впервые, может быть какой-то блокировщик всплывающих окон или отключен javascript.
Я знаю, что №2 возможен, если на странице будет использоваться какой-то базовый класс, унаследованный от MasterPage. Однако я читал, что это может быть не лучший дизайн, поскольку теперь одна из страниц имеет доступ к переменным, которые на самом деле не нужны.
Третий метод звучит разумно, но тогда будет два отдельных файла ASPX.
Есть ли правильный способ сделать это? Или другой метод, о котором я еще не подумал?
изменить
Чтобы уточнить, зарегистрированным пользователям необходимо установить определенные переменные на своих главных страницах, в то время как незарегистрированные пользователи этого не делают. Причина этого в том, что существует пользовательский элемент управления, который отображает специальное меню навигации, которое выделяет определенные элементы в зависимости от этих переменных.
Например, пользовательскому элементу управления требуется строка, чтобы определить, какой элемент выделить. Страница с информацией о профиле предоставит «профиль» в качестве параметра, который будет выделять пункт «Профиль» в меню.
Меню в пользовательском элементе управления создается динамически на основе данных из базы данных. Пункты меню сгруппированы по категориям и отображаются с соответствующим заголовком, который также извлекается из БД.