2011-10-25 59 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

謝謝!這工作就像一個魅力! –