基本情况介绍:
1 _Layout.cshtml中使用
 @Html.Action("_Sidebar", "Common");
动态生成菜单2 菜单生成方法对应的代码        //使用过滤器判断session
         [CheckLoginFilter]
        public ActionResult _SideBar()
        {
            List<INFO_Form> list = new List<INFO_Form>();
            INFO_USER _user = Session["CurrentUser"] as INFO_USER;
            list = GetFormByUser(_user);
            return PartialView(new SiderBarViewModel() { Forms = list, User = _user });
        }
3 过滤器代码 public class CheckLoginFilterAttribute : AuthorizeAttribute,IAuthorizationFilter
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
           // base.OnAuthorization(filterContext);
           if(filterContext.HttpContext.Session["CurrentUser"] == null)
            {
                filterContext.Result = new RedirectResult("~/Login.html");
            }
        }    }
问题:
1 我想要尝试在业务页面bll/index.cshtml(使用_layout.cshtml作为布局页)加载之前判断session是否过期,做了以下两个方面的尝试1.1 在bllController的index的action之前添加自定义过滤器   [CheckLoginFilter],发现页面菜单加载在_layout.cshtml中就开始了,也就说布局页的渲染要比子页面的早,失败1.2 我尝试在动态生成菜单分布页方法CommonController/_Siderbar的action添加 [CheckLoginFilter],手动测试seesion过期的情况,发现报错,不允许子操作执行重定向操作,查询得知模板页渲染之后不允许跳转,失败因此我想问一下各位有没有能够提供其他的思路实现?