Я новичок в ASP.NET MVC. Раньше я использовал PHP, и было легко создать сеанс и выбрать пользовательские записи на основе переменных текущего сеанса.
Я повсюду искал в Интернете простое пошаговое руководство, которое может показать мне, как создавать и использовать сеансы в моем приложении C # ASP.NET MVC 4. Я хочу создать сеанс с пользовательскими переменными, к которым я могу получить доступ из любого места в моих контроллерах и иметь возможность использовать переменные в моих запросах LINQ.
asp.net-mvc
session
asp.net-mvc-4
session-variables
Туто Поль Гаотингве
источник
источник
Ответы:
Пытаться
источник
WebSecurity.CurrentUserId
чтобы оно не извлекалось из базы данных несколько раз (я обнаружил, что это очень дорого)?Account/LogOn
вHome/Index
,Session["FirstName"]
этоnull
. Разработчики должны создать родительский контроллер (BaseController
) и определить защищенное поле (internal protected HttpSessionStateBase SharedSession
), которое может отображать общую переменную сеанса во всехBaseController
Из-за того, что сеть не имеет состояния, сеансы также являются чрезвычайно полезным способом сохранения объектов в запросах путем их сериализации и сохранения в сеансе.
Идеальным вариантом использования этого может быть, если вам нужно получить доступ к регулярной информации в вашем приложении, чтобы сохранить дополнительные вызовы базы данных по каждому запросу, эти данные могут быть сохранены в объекте и десериализованы по каждому запросу, например:
Наш многоразовый сериализуемый объект:
Пример использования:
После того, как этот объект был сериализован, мы можем использовать его во всех контроллерах без необходимости его создания или повторного запроса в базе данных содержащихся в нем данных.
Внедрите объект сеанса с помощью инъекции зависимостей
В идеальном мире вы должны ` ` программировать интерфейс, а не реализацию '' и вводить свой сериализуемый объект сеанса в свой контроллер, используя выбранный контейнер Inversion of Control, например (в этом примере используется StructureMap, поскольку это тот, с которым я наиболее знаком ).
Затем вы должны зарегистрировать это в своем
Global.asax.cs
файле.Для тех, кто не знаком с инъекцией объектов сеанса, вы можете найти более подробное сообщение в блоге по этой теме здесь .
Слово предупреждения:
Стоит отметить, что количество сеансов должно быть сведено к минимуму, так как большие сеансы могут вызвать проблемы с производительностью.
Также рекомендуется не хранить в них конфиденциальные данные (пароли и т. Д.).
источник
Вот как работает состояние сеанса в ASP.NET и ASP.NET MVC:
Обзор состояния сеанса ASP.NET
По сути, вы делаете это, чтобы сохранить значение в объекте Session:
Чтобы получить значение:
источник
Account
доHome
, Session ["FirstName"] имеет значение null. Разработчики должны создатьBaseController
и определить защищенное поле (internal protected HttpSessionStateBase SharedSession
), которое может отображать общуюSession
переменную во всехBaseController
Вы можете хранить любые данные в сеансе, используя:
Эта переменная будет длиться около 20 минут.
источник
U может хранить любое значение в сеансе, например Session ["FirstName"] = FirstNameTextBox.Text; но я предлагаю вам использовать как статическое поле в модели, присвоить ему значение, и вы можете получить доступ к этому значению поля в любом месте приложения. Вам не нужна сессия. сеанса следует избегать.
на контроллере - Employee.FullName = "ABC"; Теперь вы можете получить доступ к этому полному имени в любом месте приложения.
источник