예제 #1
0
파일: Routes.cs 프로젝트: YSRE/SuperRocket
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var dataDest = base.GetRouteData(httpContext);

            if (dataDest == null)
            {
                return(null);
            }

            AliasInfo aliasInfo;

            if (!_aliasMap.TryGetAlias(_url, out aliasInfo))
            {
                return(null);
            }

            //_aliasHolder.GetMap("Contents").TryGetAlias(_url, out aliasInfo);

            _routeValues = aliasInfo.RouteValues;


            dataDest.Values.Remove("area");

            var dataSource = new Dictionary <string, string>(_routeValues);

            dataSource.Merge(dataDest.Values, true);
            dataDest.Values.ReplaceWith(dataSource);
            dataDest.DataTokens["area"] = dataSource["area"];
            return(dataDest);
        }
예제 #2
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            // Get the full inbound request path
            var virtualPath = httpContext.Request.AppRelativeCurrentExecutionFilePath.Substring(2) + httpContext.Request.PathInfo;

            // Attempt to lookup RouteValues in the alias map
            IDictionary <string, string> routeValues;

            // TODO: Might as well have the lookup in AliasHolder...
            if (_aliasMap.TryGetAlias(virtualPath, out routeValues))
            {
                // Construct RouteData from the route values
                var data = new RouteData(this, _routeHandler);
                foreach (var routeValue in routeValues)
                {
                    var key = routeValue.Key;
                    if (key.EndsWith("-"))
                    {
                        data.Values.Add(key.Substring(0, key.Length - 1), routeValue.Value);
                    }
                    else
                    {
                        data.Values.Add(key, routeValue.Value);
                    }
                }

                data.Values["area"]     = Area;
                data.DataTokens["area"] = Area;

                return(data);
            }
            return(null);
        }