如何从ASP .NET Core MVC 1.0中的视图访问会话

FSM*_*axB 9 session asp.net-core-mvc asp.net-core asp.net-core-1.0

我试图从视图内部访问会话数据.

使用案例:我将状态消息存储在将显示在页面顶部的会话中.目前我通过使用一个DisplayMessages()函数来实现它,该函数设置一些ViewData[....]属性并在每个控制器动作的开头调用它.

目标:我只想设置状态消息一次,而不需要控制器中的其他代码来显示下一页加载的消息.

所以我试图直接从视图中访问存储在会话中的消息.

到目前为止,我尝试了以下内容:

  • 依赖注入 IHttpContextAccessor(似乎不再适用于ASP .NET Core MVC 1.0.0
  • 创建一个静态类访问会话,包括从改变next()next.invoke()的意见建议
    • 这没用.我可以访问HttpContext并且Session.IsAvailable是真的,但会话中没有数据.

小智 20

以下内容应在视图中起作用: Context.Session.TryGetValue

如果你正在使用SessionExtensions那么Context.Session.GetString将工作.

  • @FSMaxB如果在视图中添加`@using Microsoft.AspNetCore.Http;`,则可以使用Context.Session.GetString("<key>") (3认同)
  • 通过'Context'而不是'HttpContext'访问它有效. (2认同)