public virtual Route Route(MvcCore.Request request) { Route currentRoute = null; string chars = @"a-zA-Z0-9\-_/"; string controllerName = request.GetParam("controller", chars).ToString(); string actionName = request.GetParam("action", chars).ToString(); if (controllerName.Length > 0 && actionName.Length > 0) { currentRoute = this.routeByControllerAndActionQueryString(request, controllerName, actionName); } else { currentRoute = this.routeByRewriteRoutes(request); } string[] defaultCtrlAction = MvcCore.Application.GetInstance().GetDefaultControllerAndActionNames(); Dictionary <string, string> defaultCtrlActionDct = new Dictionary <string, string>() { { "controller", defaultCtrlAction[0] }, { "action", defaultCtrlAction[1] } }; foreach (var item in defaultCtrlActionDct) { if (!request.Params.ContainsKey(item.Key) || (request.Params.ContainsKey(item.Key) && request.Params[item.Key].ToString().Length == 0)) { request.Params[item.Key] = MvcCore.Tool.GetDashedFromPascalCase(item.Value); } } if (!(currentRoute is Route) && (request.Path == "/" || this.routeToDefaultIfNotMatch)) { currentRoute = MvcCore.Route.GetInstance( name: $"{defaultCtrlAction[0]}:{defaultCtrlAction[1]}", controller: defaultCtrlAction[0], action: defaultCtrlAction[1] ); } if (currentRoute is Route) { if (currentRoute.Controller.Length == 0) { currentRoute.Controller = MvcCore.Tool.GetPascalCaseFromDashed( request.Params["controller"].ToString() ); } if (currentRoute.Action.Length == 0) { currentRoute.Action = MvcCore.Tool.GetPascalCaseFromDashed( request.Params["action"].ToString() ); } } return(currentRoute); }
public Controller SetRequest(MvcCore.Request request) { this.request = request; return(this); }