ASP.net MVC - 请求范围的全局变量

Pal*_*tir 11 asp.net-mvc

我有一个值,我想在一个请求期间成为vaild.我没有使用Session,因为这会使整个导航会话的值全局化.

所以我把它放在一个类的静态字段中.很棒,但后来我发现这些字段更加全局化,也就是说,它们可以保留整个应用程序!这意味着导航会话之间可能存在随机交互.

所以问题是:是否有一个安全的地方我可以放一个全局变量,这将是

  • 全局请求
  • 请求完成后重置
  • 不受同一用户或其他用户的任何其他请求的影响

谢谢Palantir

编辑我会详细说明.我的母版页中有一段代码,我需要在某些条件下隐藏,我只知道它在控制器中.我想在控制器中设置一个静态变量,然后由主页面查询,但现在我看到可能有更好的方法......

Dyl*_*tie 24

使用HttpContext.Items- 每请求缓存存储.看看这篇文章对4guysfromrolla的更多细节.

它应该在ASP.NET MVC中正常工作.您可能希望从基类派生主页(通过代码隐藏或使用Inherits指令)并在基类上有一个受保护的方法来检查HttpContext.Items并返回,例如true/false取决于您是否要显示条件代码.


Ric*_*ard 10

TempData 持续到下一个请求,如前所述.

但是还有另外两个字典作为单一请求的范围.

  • { Controller,ViewPage}.ViewData
  • Context.Items

从控制器到(主)页面进行通信ViewData可能是更好的选择.