public override IController CreateController(RequestContext requestContext, string controllerName) { Trace.WriteLine(DateTime.Now + ": CruderControllerFactory receive request with method " + requestContext.HttpContext.Request.HttpMethod); if (controllerName == "Cruder") { //if (requestContext.HttpContext.Request.HttpMethod == "OPTIONS") //{ // requestContext.HttpContext.Response.WriteCorsHeaders(); // requestContext.HttpContext.Response.Flush(); // return null; //} RouteValueDictionary routeValues = requestContext.RouteData.Values; string appName = (string)routeValues["appName"], entityTypeName = (string)routeValues["entityType"]; string entityName = string.Join(".", appName, entityTypeName); Type entityType = _userEntitiesManager.GetRegistratedType(entityName); if (entityType == null) { return(CreateRedirectionController(requestContext, "EntityTypeNotFound", "Error", routeValues)); } if (!requestContext.HttpContext.Request.IsAjaxRequest()) { SetController(requestContext, "CrudHtmlUi"); SetAction(requestContext, "Index"); return(new CrudHtmlUiController()); } Type controllerType = typeof(CruderController <>).MakeGenericType(entityType); IController controller = (IController)DependencyResolver.Current.GetService(controllerType); return(controller); } if (_userEntitiesManager.GetRegistratedNamespaces().Any(ns => TypeNameCompareHelper.IsStringMatchesTypeName(controllerName, ns))) { requestContext.RouteData.Values["appName"] = controllerName; SetController(requestContext, "ApplicationHome"); SetAction(requestContext, "Index"); return(new ApplicationHomeController()); } return(base.CreateController(requestContext, controllerName)); }