2011-12-21 25 views
2

にヘルパーメソッドにキャッシングを適用するためにどのように私は自分のアプリケーションでのヘルパーメソッドを持っていると私はそれのasp.net MVC 2

[OutputCache(Duration = 3600, VaryByParam = "DetailsId")] 
public static Dictionary<string, object> GetData(int DetailsId) 
{ 

} 

ではなく、この関数が呼び出されるすべての要求に出力キャッシュを適用しています。

私は出力キャッシュをヘルパーメソッドに適用できますか?はいの場合はどうですか?

答えて

3

出力キャッシュ属性は、静的メソッドまたは非静的メソッドではなく、ActionResultにある必要があります。

例えば

[OutputCache(Duration = 3600, VaryByParam = "DetailsId")] 
public ViewResult GetData(int DetailsId) 
{ 

} 

要するに、あなたはOutputCacheがこのレベルの使用を属性キャッシュオブジェクトの線に沿って何かを使用することはできません。

public Dictionary<string,object> GetData(int DetailsId) 
{ 
//Try to get object from cache 
var model = (Dictionary<string,object>)HttpContextBase.Current.Cache["Data_"+DetailsId]; 
if(model==null) 
{ 
HttpContextBase.Current.Cache["Data_"+DetailsId] = model_from_store; 
return model_from_store; 
} 
else 
return model; 
}