2012-01-17 78 views
0

我設計了一個普通模式對話框,模態對話框包含:MVC3 Ajax.ActionLink緩存

- 查找鏈接

-Partial查看(對返回的結果)。

爲了說明我的問題,你會在RouteValues中找到我發佈當前時間的秒數。每次點擊,我都會得到相同的結果。

@Ajax.ActionLink("Find", "PopulateResults", "Contract", new { kind = DateTime.Now.Second }, 
             new AjaxOptions 
             { 
              UpdateTargetId = "results", 
              HttpMethod = "POST", 
              InsertionMode = InsertionMode.Replace, 
              LoadingElementId = "progress" 

             }, new 
             { 
              @class = "button", 
              id = "FindButton" 
             } 
            ) 

控制器得到那種值,並將其傳遞給局部視圖

[HttpPost] 
    [OutputCache(NoStore = true, VaryByParam = "", Duration = 0)] 
    public ActionResult PopulateResults(int kind) 
    { 


     return PartialView("PopulateResults", kind); 

    } 

正如我所說的,值始終緩存,它不更新。

更新:本來,我並不是真的想發佈當前時間並在部分視圖中顯示它。 在我的模式對話框中,我有一個用於過濾返回結果的文本框。實際上,發生的情況是,文本框的值總是被緩存。

回答

0

我張貼在幾秒鐘內

你沒有張貼當前當前時間。您正在發佈服務器呈現此頁面時的時間(實際上不是時間,而只是第二個)。如果要發佈當前時間,請使用客戶端時間。

+0

我試圖發佈一個字符串到控制器,但它沒有工作 – Anwar 2012-01-17 19:56:10

+1

@Anwar,你在說什麼字符串?其實我不認爲你有緩存問題。您已在控制器操作中使用OutputCache屬性禁用緩存,並且您正在使用通常不被瀏覽器緩存的POST請求。所以你的問題在別的地方。如果你說你一直在控制器動作中使用相同的'kind'參數,這並不意味着這個動作被緩存了。如果這是它甚至不會被調用。這是因爲每次你通過相同的價值。 – 2012-01-17 19:56:28

+0

你是對的,我犯了兩個錯誤 首先,當我發佈當前時間在幾秒鐘內 – Anwar 2012-01-17 20:17:35