2011-10-25 57 views
0

我遇到了一个我似乎无法修复或甚至解决的问题。在我看来,我有以下几点:MVC3页面未更新

@Html.Hidden("IsLocked", (Session["IsLocked"]) ? "true" : "") 

会话[“IsLocked”]变量在我BaseController,所有其他控制器的继承设置。不过,我发现如果我访问一个页面,并且当前没有锁定,并执行锁定操作并重新访问它,它将不会更改“IsLocked”的值。

我似乎无法弄清楚它为什么没有改变,即使Session值已经改变?

回答

1

这听起来像是你遇到了一个缓存问题,因为这些页面被缓存了它们的初始值,并且尽管值发生了变化,当页面被请求时它将简单地从缓存中拉出。

您可以使用OutputCache属性来帮助禁用用于这些目的的缓存。下面将确保您的行为/页面没有缓存,数据总是“新鲜”:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")] 
public abstract class BaseController : Controller 

上面可以放置在任何控制器或者动作禁用缓存为特定事件。 (在上述上下文中,如果放置在BaseController上,它将有效地禁用从BaseController派生的每个控制器的缓存)

+0

我会试试看看它是否有效。 –

+0

谢谢!这工作就像一个魅力! –