2016-10-31 13 views
0

私たちは、OutputCacheを使用して複数ページのMVCアクションの結果をキャッシュできるようにするアプリケーションのインスタンスを用意しています。私はちょうど各ページのための私の基本的なセットアップキャッシュがあることを認識したので、これはチェーンを壊す。MVC OutputCache属性を使用して複数のページで使用するアクションの結果をキャッシュする方法

私の究極の目標は、メインページをヒットしてAjaxリクエストを実行した後、後続ページのデータをロードしてキャッシュするというものです。ユーザーがMVCアクションデータを必要とする別のページにナビゲートすると、すぐに使用できます。

これは、あなたがAに要求を向ける試みることができる、私のメインページに非同期でデータをロードするために私のスクリプトです

$(document).one("ajaxStop", function() { 

    $.ajax({ 
     url: '../Companies/CompanySelectList', 
     type: 'GET', 
     success: function (data) { 
      //alert(data.success); 
     }, 
     error: function (request, status, error) { 
      //alert(request.responseText); 
     } 
    }) 

}) 

そして、これを実行するために私のMVCのアクションで、

[OutputCache(Duration=60)] 
public ActionResult CompanySelectList() 
{ 
    List<CompanyDTO> companies = new List<CompanyDTO>(); 

    var results = _api.Companies.GetCompany(); 
    if (results.message == null) 
    { 
     companies.AddRange(results.data); 

     //Build up remaining data 
     for (int i = results.page + 1; i <= results.totalPages; i++) 
     { 
      results = _api.Companies.GetCompany(page: i); 
      companies.AddRange(results.data); 
     } 

     companies = companies.OrderBy(n => n.CompanyName).ToList(); 
     return PartialView("_CompanySelectList", companies); 
    } 
    else 
    { 
     ModelState.AddModelError("", results.message); 
    } 

    return PartialView(""); 
} 

答えて

0

web apiコントローラ、そしてそこに簡単な手動キャッシングメカニズムを構築しています。 例はここにあります:Caching in Web API

関連する問題