我想做以下事情(我将分为两点):
在执行操作之前,如果viewmodel在缓存中,则返回视图和viewmodel而不执行操作。
如果不在缓存中,请继续执行操作,并到达OnActionExecuted以将viewmodel放入缓存中。
如何在不执行操作的情况下返回视图和视图模型(第一点)?
这是代码。我的疑问表明了???????:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//IF the viewmodel exists dont execute the action again
if (filterContext.HttpContext.Cache["viewmodel"]!=null)
{
filterContext.Result=???????
}
base.OnActionExecuting(filterContext);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
//Cast de model
ContentDetailVM model = (ContentDetailVM)filterContext.Controller.ViewData.Model;
filterContext.HttpContext.Cache.Insert("viewmodel", model);
//we're asking for a close section
if (model.CurrentSection.HideAccess == true)
{
//pass to the client some flag in order to show the div
filterContext.Controller.ViewData["showoverlaylayer"]=true;
}
base.OnActionExecuted(filterContext);
}
提前多多感谢。
最诚挚的问候。
何。
答案 0 :(得分:7)
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var model = filterContext.HttpContext.Cache["viewmodel"];
if (model != null)
{
var result = new ViewResult();
result.ViewData.Model = model;
filterContext.Result = result;
}
}