部分的なビューアクションのためにOutputCacheに問題があります。私のindexアクションコントローラはそう...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
のように定義されていると私は私のIndexビュー(vbhtml)ではそう...
<OutputCache(Duration:=3600, VaryByParam:="*")>
<Route("search")>
<HttpGet>
Public Function Search(value As MySearchFilter) As PartialViewResult
Return PartialView("_List", Search(value))
End Function
ように定義するPartialViewResult作用を有する、私は部分的なアクションを呼び出しますそうですね...
@Html.Action("Search")
これはキャッシュせずに正常に動作します。 "Search"アクションが渡された正しいフィルタオブジェクトを取得しているのがわかります。
私が抱えている問題は、キャッシングを有効にするとVaryByParam:= "*"が無視されるようです。クエリ文字列のパラメータが変更された場合でも、結果は変更されません。私がデバッグすると、そのアクションは最初に呼び出されるだけで、それ以降は呼び出されません。
「インデックス」の主な動作は正しく機能し、パラメータの変更によって異なるコンテンツが正しくキャッシュされます。
インデックスアクションでキャッシュを使用し、「検索」アクションでキャッシュをオフにすることはできますが、他の部分的なビューが多数あり、独立してキャッシュを制御できるようにしたいと思いますそれぞれについて。
注:RouteData.Valuesによってキャッシュをカスタマイズするつもりはありません。私は、VaryByParamとまったく同じであるはずのQuerystringパラメータでカスタマイズしようとしています。デバッガでは、Request.QueryStringがコントローラアクションで使用できることがわかります。私は完全に困惑している、私はそれが動作していない理由を理解することはできません。
[VaryByParam = "\ *"はRouteData.Valuesも読み取ることができますか?](http://stackoverflow.com/questions/4518671/does-varybyparam-also-read-routedata-values) – GSerg
これは、残念なことに助けてください。私が読んだことのすべてから、私がやっていることはうまくいくはずですが、それだけではありません。クエリ文字列パラメータは変更されていますが、なんらかの理由でこれは無視されます。 – user1751825
それを考え出した。 MySearchFilterクラスの.ToString()をオーバーライドする必要があります。 – user1751825