我遇到了一个我似乎无法解决的问题,甚至可以解决这个问题。在我的视图中,我有以下内容:
@Html.Hidden("IsLocked", (Session["IsLocked"]) ? "true" : "")
Session [“IsLocked”]变量在我的BaseController中设置,所有其他控制器都继承该变量。但是,我发现如果我访问一个页面,并且它当前没有被锁定,并执行锁定操作并重新访问它,它将不会更改“IsLocked”的值。
我似乎无法弄清楚为什么它没有改变,即使Session值已经改变了?
答案 0 :(得分:1)
听起来你正在遇到一个缓存问题,因为页面正在缓存其初始值,尽管值有所变化,但当请求页面时,它只会从缓存中拉出来。
您可以使用OutputCache属性来协助禁用缓存以实现这些目的。以下内容将确保您的操作/页面不会被缓存,并且数据始终是“新鲜的”:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
public abstract class BaseController : Controller
以上内容可以放在任何控制器或操作上,以禁用该特定事件的缓存。 (在上面的上下文中,如果放在BaseController上,它将有效地禁用从BaseController派生的每个控制器的缓存)