2013-10-26 71 views
0
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()中。

當我創建控制器時,新的實例沒有被緩存。 有人能告訴我如何可以返回此代碼中的緩存索引?

回答

0

您需要重定向到行動像

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

而不是使一個函數調用new HomeController().IndexCache();

+0

感謝Satpal這個,但我要尋找一個解決方案,無需更改URL – user2906155

相關問題