//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)); }
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)); }