I have a _layout load menu as :
...
@Html.Action("MenuRole","Menu")
...
in Action MenuRole i check session with Action Filter :
[CheckSession]
[ChildActionOnly]
public ActionResult MenuRole()
{
....
return PartialView("_LoadMenu",menuModel);
//_LoadMenu is partial view to show menurole
}
And in Action Filter :
public class CheckSession : ActionFilterAttribute, IActionFilter
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var ctx = filterContext.HttpContext;
//if Session == null => Login page
if (ctx.Session["Username"] == null)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Index", controller = "Login" }));
}
base.OnActionExecuting(filterContext);
}
}
When session timeout, _layout show error in @Html.Action("MenuRole","Menu") : Child actions are not allowed to perform redirect actions