2013-10-26 2 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() 
} 

이 방법은 작동하지 않습니다. 사용자가 로그인하지 않은 경우 캐시 된 반환 싶습니다. 이것은 최종 코드가 아닙니다.캐시 된 actionresult를 작업에서 반환하는 방법

캐싱 된 인덱스()를 제공하기 전에 action = "index"및 controller = "home"을 확인해야합니다.

컨트롤러를 만들면 새 인스턴스가 캐시되지 않습니다. 누군가이 코드에서 캐시 된 인덱스를 어떻게 반환 할 수 있습니까?

답변

0

당신은 이것에 대한 함수 호출을 new HomeController().IndexCache();

+0

감사 Satpal을 만드는 대신

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

같은 행동을 리디렉션해야하지만 URL을 변경하지 않고 솔루션을 찾고 있어요 – user2906155

관련 문제