我有OutputCache問題的局部視圖操作。我的索引動作控制器的定義是這樣的...MVC 5:PartialViewResult動作緩存永遠不會改變VaryByParam:=「*」
<OutputCache(Duration:=3600, VaryByParam:="*")>
<Route("")>
<HttpGet>
Public Function Index(value As MySearchFilter) As ActionResult
ViewData("Title") = "Search Jobs"
Return View("Index", value)
End Function
,我必須像這樣定義的PartialViewResult動作......
<OutputCache(Duration:=3600, VaryByParam:="*")>
<Route("search")>
<HttpGet>
Public Function Search(value As MySearchFilter) As PartialViewResult
Return PartialView("_List", Search(value))
End Function
在我的索引視圖(vbhtml),我稱之爲局部動作像這樣...
@Html.Action("Search")
這工作正常,沒有緩存。我可以看到「搜索」操作正在獲取正確的過濾對象傳遞給它等
我遇到的問題是,啓用緩存,VaryByParam:=「*」似乎被忽略。即使查詢字符串參數改變,結果也不會改變。當我調試時,我可以看到這個動作只是第一次被調用,並且之後從來沒有。
主「索引」操作正常工作,對參數的任何更改都會正確緩存不同的內容。
我知道我可以在索引操作上使用緩存,並關閉「搜索」操作,但我有一些其他部分視圖,我希望能夠獨立控制緩存爲每個。
注意: 我不想通過RouteData.Values自定義緩存,我試圖通過Querystring參數來定製它,這應該是VaryByParam所做的。在調試器中,我可以看到Request.QueryString可用於控制器操作。我完全被難住了,我不明白爲什麼它不起作用。
[Does VaryByParam =「\ *」是否也讀取RouteData.Values?](http://stackoverflow.com/questions/4518671/does-varybyparam-also-read-routedata-values) – GSerg
這可能不是'不幸的是,從我讀過的所有內容來看,我所做的事情應該可行,但事實並非如此。查詢字符串參數正在改變,但由於某種原因,這被忽略。 – user1751825
想通了。我必須爲MySearchFilter類重寫.ToString()。 – user1751825