特定の部分をキャッシュせずにページ全体をキャッシュするために、Nugetの素晴らしいMVCDonutCachingパッケージを使用しています。プロセスは単純で、すべてが正常に機能します。
私は次のようにキャッシュしています:
[DonutOutputCache(CacheProfile = "FiveMins")]
public ActionResult Index()
{
return View();
}
私のページのセクションでは、キャッシュしたくないので、次のことを行っています。
@Html.Action("HeaderLinks","Home", true)
これは正常に機能し、実際にページの大部分はキャッシュされますが、ヘッダーリンク(ユーザーがログインしていない場合はログオンボタンを表示するコンテキスト依存リンク、ログインしている場合はユーザー名など)はキャッシュされません。これまでのところすべてが機能します。
私が抱えている問題は、ヘッダーリンクがマスター/レイアウトページに属し、アクションにDonutOutputCache属性が設定されているかどうかに関係なく、全面的に使用されることです。別のアクションを作成するときは、ドーナツキャッシュ属性なしで「私たちについて」と呼びましょう。ヘッダーリンクはまったく表示されません。
public ActionResult AboutUs()
{
return View();
}
ソースコードを見ると、次のように見えます
<!--Donut#
<ActionSettings xmlns="http://schemas.datacontract.org/2004/07/DevTrends.MvcDonutCaching" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ActionName>HeaderLinks</ActionName>
<ControllerName>Home</ControllerName>
<RouteValues xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:KeyValueOfstringanyType>
<a:Key>Area</a:Key>
<a:Value i:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema"/>
</a:KeyValueOfstringanyType>
</RouteValues>
</ActionSettings>
#-->
明らかに、ドーナツキャッシングライブラリによって生成された上記の例では、リンクセクションがコメント付きのXMLに置き換えられています。
一言で言えば、私の質問は、親アクションがドーナツキャッシングを使用しているかどうかに関係なく、このライブラリで同じ子アクションを再利用することは可能ですか?
どんな助けでもいただければ幸いです。