Пример #1
0
        /// <summary>
        /// 控制器处理请求
        /// </summary>
        /// <param name="context">上下文对象</param>
        private static void CallControler(HttpContext context) //控制器处理请求函数,利用反射来做,复杂性大为降低
        {
            string Controler_name = "";

            if (context.Session["accctx"] == null && !cachecookie())
            {
                if (context.Request["state"] != null)   //session对象 && mm缓存中对象木有, state有值(第三方登录标识) 表示没登录  进入第三方登录
                {
                    Controler_name = "ThreeLoginControler";
                }
                else
                {
                    Controler_name = "loginControler";   //session对象 && mm缓存中对象木有,表示没登录,加载登录控制器
                }
            }
            else if (context.Request["ctrl"] == null && cachecookie())  //mm缓存中对象有值 且没有控制器  则加载  index控制器
            {
                Controler_name = "indexControler";
            }
            else if (context.Request["ctrl"] != null)                   //此参数表示控制器名
            {
                Controler_name = context.Request["ctrl"] + "Controler"; //得到控制器名
            }
            else
            {
                Controler_name = "defaultControler"; //如果不指定则使用默认控制器,可以放在web.config中。
            }
            string nspace        = "Web.Control";    //控制器命名空间,可以放在web.config中。
            Assembly res         = null;             //命名空间程序集对象
            IControler Controler = null;             //用于接收控制器

            res = getNamespace();                    //获得程序集对象
            if (res != null)
            {
                Controler = (IControler)res.CreateInstance(nspace + "." + Controler_name); //动态创建控制器实例
                if (Controler != null)
                {
                    Controler.ActionPerform(context);
                }
            }
        }