Asp.net mvc 如何在asp.net mvc 2中应用帮助器方法中的缓存

Asp.net mvc 如何在asp.net mvc 2中应用帮助器方法中的缓存,asp.net-mvc,asp.net-mvc-2,outputcache,Asp.net Mvc,Asp.net Mvc 2,Outputcache,我的应用程序中有一个helper方法,并在其上应用了输出缓存 [OutputCache(Duration = 3600, VaryByParam = "DetailsId")] public static Dictionary<string, object> GetData(int DetailsId) { } [OutputCache(Duration=3600,VaryByParam=“DetailsId”)] 公共静态字典GetData(int-DetailsId) { }

我的应用程序中有一个helper方法,并在其上应用了输出缓存

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

}
[OutputCache(Duration=3600,VaryByParam=“DetailsId”)]
公共静态字典GetData(int-DetailsId)
{
}
但是在每次请求时都会调用此函数


我想知道我可以在助手方法上应用输出缓存吗?如果是,则如何?

您的输出缓存属性需要在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;
}
公共字典GetData(int-DetailsId)
{
//尝试从缓存中获取对象
var model=(Dictionary)HttpContextBase.Current.Cache[“Data_”+DetailsId];
if(model==null)
{
HttpContextBase.Current.Cache[“Data_uu”+DetailsId]=来自_存储的模型;
从_商店返回模型_;
}
其他的
收益模型;
}