//protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, System.Type controllerType)
        //{
        //    //获取构造函数对象
        //    var constructor = controllerType.GetConstructors()[0];
        //    //获取构造函数参数
        //    var param = constructor.GetParameters();
        //    //获取构造函数所需的参数
        //    var paramNames = param.Select(a => {
        //        var serviceType = (ServiceAttribute)(a.ParameterType.GetCustomAttributes(typeof(ServiceAttribute), true)[0]);
        //        var t = Type.GetType(serviceType.ServiceName + ", " + serviceType.ServiceNameSpace, true);
        //        return Activator.CreateInstance(t);
        //    }).ToArray();
        //    IController controller = Activator.CreateInstance(controllerType, paramNames) as Controller;
        //    return controller;
        //}

        private string GetViewPath(RequestContext requestContext)
        {
            string namespaces = (requestContext.RouteData.DataTokens["Namespaces"] as string[])[0];
            string catchall   = string.Join("/", requestContext.RouteData.Values.Values).TrimEnd('/');

            return(ExecuteViewResult.GetViewPath(namespaces, catchall));
        }
Exemple #2
0
 public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
 {
     if (!viewName.StartsWith("~"))
     {
         try
         {
             string namespaces = (controllerContext.RouteData.DataTokens["Namespaces"] as string[])[0];
             string controller = controllerContext.RouteData.GetRequiredString("controller");
             viewName = ExecuteViewResult.GetViewPath(namespaces, controller, viewName);
         }
         catch
         {
         }
     }
     return(base.FindView(controllerContext, viewName, masterName, useCache));
 }