2011-12-21 2 views
2

У меня есть вспомогательный метод в моем приложении, и я применил кэширование вывода на немКак применять кэширование в вспомогательный метод в ASP.NET MVC 2

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

} 

но при каждом запросе эта функция вызывается.

Я хочу знать, могу ли я применять выходной кеш на вспомогательном методе? Если да, то как?

ответ

3

Атрибут Output Cache должен находиться в 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; 
}