编辑:(对于非 ASP.NET MVC 应用程序)
这个怎么样:
使 OutputCache 定义如下:
<%@ OutputCache Duration="120" VaryByParam="None" VaryByCustom="listingtype;propertytype;location" %>
在 Global.asax.cs 添加这些方法:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "lisingtype")
{
return GetParamFromRouteData("listingtype", context);
}
if (custom == "propertytype")
{
return GetParamFromRouteData("propertytype", context);
}
if (custom == "location")
{
return GetParamFromRouteData("location", context);
}
return base.GetVaryByCustomString(context, custom);
}
private string GetParamFromRouteData(string routeDataKey, HttpContext context)
{
object value;
if (!context.Request.RequestContext.RouteData.Values.TryGetValue(routeDataKey, out value))
{
return null;
}
return value.ToString();
}
旧内容:
如果您只是将 OutputCache 放在您的操作方法上,并使您的所有路由部分成为您操作方法的一部分,则如下所示:
[OutputCache]
public ActionResult FindProperties(string listingtype, string propertytype, string location)
{
}
框架会自动为您更改这些项目的缓存(请参阅:http ://aspalliance.com/2035_Announcing_ASPNET_MVC_3_Release_Candidate_2_.4 )