Eu sou novo no ASP.NET MVC. Já usei PHP antes e foi fácil criar uma sessão e selecionar registros de usuário com base nas variáveis de sessão atuais.
Procurei em todos os lugares na Internet um tutorial simples passo a passo que pode me mostrar como criar e usar sessões em meu aplicativo C # ASP.NET MVC 4. Quero criar uma sessão com variáveis de usuário que posso acessar de qualquer lugar em meus controladores e ser capaz de usar as variáveis em minhas consultas LINQ.
asp.net-mvc
session
asp.net-mvc-4
session-variables
Thuto Paul Gaotingwe
fonte
fonte
Respostas:
Experimentar
fonte
WebSecurity.CurrentUserId
modo que não o retire do banco de dados várias vezes (descobri que é muito caro)?Account/LogOn
paraHome/Index
,Session["FirstName"]
énull
. Os desenvolvedores devem criar um controlador pai (BaseController
) e definir um campo protegido (internal protected HttpSessionStateBase SharedSession
) que pode expor a variável de sessão compartilhada em todos os subcontroladores (isso pressupõe que todos os controladores de seu aplicativo herdam deBaseController
)Devido à natureza sem estado da web, as sessões também são uma forma extremamente útil de persistir objetos em solicitações, serializando-os e armazenando-os em uma sessão.
Um caso de uso perfeito disso poderia ser se você precisar acessar informações regulares em seu aplicativo, para salvar chamadas de banco de dados adicionais em cada solicitação, esses dados podem ser armazenados em um objeto e não serializados em cada solicitação, assim:
Nosso objeto reutilizável e serializável:
Caso de uso:
Uma vez que este objeto tenha sido serializado, podemos usá-lo em todos os controladores sem a necessidade de criá-lo ou consultar o banco de dados em busca dos dados contidos nele novamente.
Injetar seu objeto de sessão usando injeção de dependência
Em um mundo ideal, você iria " programar para uma interface, não para implementação " e injetar seu objeto de sessão serializável em seu controlador usando seu contêiner de Inversão de Controle de escolha, assim (este exemplo usa StructureMap, pois é o que estou mais familiarizado )
Você então registraria isso em seu
Global.asax.cs
arquivo.Para aqueles que não estão familiarizados com a injeção de objetos de sessão, você pode encontrar uma postagem de blog mais detalhada sobre o assunto aqui .
Uma palavra de alerta:
É importante notar que as sessões devem ser reduzidas ao mínimo, sessões grandes podem começar a causar problemas de desempenho.
Também é recomendado não armazenar nenhum dado sensível neles (senhas, etc).
fonte
É assim que funciona o estado da sessão em ASP.NET e ASP.NET MVC:
Visão geral do estado da sessão ASP.NET
Basicamente, você faz isso para armazenar um valor no objeto Session:
Para recuperar o valor:
fonte
Account
paraHome
, Sessão ["Nome"] é nulo. Os desenvolvedores devem criar umBaseController
e definir um campo protegido (internal protected HttpSessionStateBase SharedSession
) que pode expor aSession
variável compartilhada em todos os subcontroladores (isso pressupõe que todos os seus controladores de aplicativos herdam deBaseController
)Você pode armazenar qualquer tipo de dados em uma sessão usando:
Essa variável vai durar 20 minutos ou mais.
fonte
Você pode armazenar qualquer valor na sessão como Session ["FirstName"] = FirstNameTextBox.Text; mas vou sugerir que você tome um campo estático no modelo, atribua valor a ele e você possa acessar esse valor de campo em qualquer lugar do aplicativo. Você não precisa de sessão. sessão deve ser evitada.
no controlador - Employee.FullName = "ABC"; Agora você pode acessar este nome completo em qualquer lugar do aplicativo.
fonte