HttpRuntime.Cache
コントローラーアクションが呼び出されたときにコレクションが常に空になる理由を理解しようとしてい$.ajax
ます? 通常呼び出されるアクションでは、すべてが完全に機能し、からデータを取得できますCache
。AJAX によって呼び出されるアクションのライフサイクルが異なり、Cache
コレクションがまだ準備されていない可能性があります。これは私のコード例です:
アクション:
[HttpPost]
public PartialViewResult SomeAjaxAction()
{
// when receive ajax request HttpRuntime.Cache is always empty, but it shouldn't be
SomeType item = HttpRuntime.Cache.Get("cache_key") as SomeType;
return PartialView("SomeAjaxActionView", item);
}
呼び出し:
$.ajax({
type: 'POST',
url: '/controller/SomeAjaxAction/',
success: function (response) {
alert(response);
}
});
カスタムアクションフィルターなどで修正する方法はありますか?
答え
わかりました、ここで答えを見つけました: Asp.net MVCアクションへの ajax 呼び出しを行うときのセッションへのアクセスbase.HttpRuntime.Cache.Get("key")