Я не уверен, что задаю здесь правильный вопрос.
У меня есть общая страница (главная страница), которая вызывает пару частичных страниц для бокового меню, заголовка, нижнего колонтитула и т. д., и все мои контроллеры наследуют BaseController.
Теперь, в зависимости от статуса входа пользователя, мне нужно показать разные данные на всех этих неполных страницах, и я подумал, где лучше всего проверить, вошел ли пользователь в систему или нет - BaseController.
И в этом моя проблема. Мне нужно связаться с одним из моих веб-сервисов, чтобы узнать, вошел ли пользователь в систему, и получить соответствующие данные, если это так. Мне нужно сделать это только один раз, и поскольку все контроллеры наследуются от BaseController, каждый из этих частичных вызовов страниц приводит к вызову веб-службы.
Очевидно, что я не могу просто вставить приватную логическую переменную isUserAuthenticated
и проверить наличие флага, так как каждый контроллер будет иметь новый экземпляр базового контроллера.
В традиционных проектах asp.net я бы поместил этот материал в HttpContext.Current.Items[]
и использовал его повторно, но я не могу (каким-то образом) получить к нему доступ в MVC.
Я не могу просто не наследоваться от базовой страницы на частичных страницах, поскольку они также могут вызываться независимо, и тогда мне также нужно знать статус входа пользователя.
Каков наилучший способ вызвать функцию только один раз или, скорее, сохранить логическое значение только на время одного вызова? - доступный между контроллерами..
Как люди это делают? спасибо, извините, я новичок в mvc!