如何在asp.net mvc 2中的helper方法中应用缓存

时间:2011-12-21 10:44:19

标签: asp.net-mvc asp.net-mvc-2 outputcache

我的应用程序中有一个帮助方法,我已经在其上应用了输出缓存

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

}

但是在每次请求时都会调用此函数。

我想知道我可以在Helper方法上应用Output Cache吗?如果是,那么如何?

1 个答案:

答案 0 :(得分:3)

您的输出缓存属性需要在ActionResult上,而不是在静态或非静态方法上。

例如

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

}

简而言之,你不能使用OutputCache属性,这个级别使用Cache对象的行:

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;
}