如何从操作返回缓存的actionresult

时间:2013-10-26 05:00:53

标签: c# asp.net-mvc caching

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.Controller.ViewData["currentuser"] == null)
    {
        filterContext.Result = new HomeController().IndexCache();
    }
    base.OnActionExecuting(filterContext);
}

[OutputCache(Duration=3600)]
public ActionResult IndexCache()
{
    return view()
}

这不起作用。如果用户未登录,我想返回缓存。这不是最终代码。

我需要检查action =“index”和controller =“home”,然后再将它们缓存为Index()。

当我创建控制器时,新实例不会被缓存。 有人能告诉我如何在此代码中返回缓存索引吗?

1 个答案:

答案 0 :(得分:0)

您需要重定向到

之类的操作
filterContext.Result =  new RedirectToRouteResult(
                    new System.Web.Routing.RouteValueDictionary {
                    { "controller", "Home" },
                    { "action", "IndexCache" });

而不是调用函数new HomeController().IndexCache();