コード例 #1
0
        public void Can_Resolve_Virtual_Path_With_Default_Action()
        {
            // Arrange
            IPage model = new Page {Metadata = {Url = "page1/page2"}};
            var routeValueDictionary = new RouteValueDictionary();

            // Act

            var virtualPathResolver = new VirtualPathResolver();
            var virtualPath = virtualPathResolver.ResolveVirtualPath(model, routeValueDictionary);

            // Assert

            Assert.AreEqual("page1/page2/", virtualPath);
        }
コード例 #2
0
        /// <summary>
        /// Returns information about the URL that is associated with the route.
        /// </summary>
        /// <param name="requestContext">An object that encapsulates information about the requested route.</param>
        /// <param name="values">An object that contains the parameters for a route.</param>
        /// <returns>
        /// An object that contains information about the URL that is associated with the route.
        /// </returns>
        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            var model = values[ModelKey] as IPageModel;

            if (model == null)
            {
                VirtualPathData path = base.GetVirtualPath(requestContext, values);

                if (path != null && path.VirtualPath != "")
                {
                    path.VirtualPath = path.VirtualPath + "/";
                }
                return(path);
            }

            var vpd = new VirtualPathData(this, this.VirtualPathResolver.ResolveVirtualPath(model, values));

            vpd.Route = this;

            vpd.VirtualPath = string.Format("/ui/pages".TrimStart(new[] { '/' }) + "/{0}", VirtualPathResolver.ResolveVirtualPath(model, values));

            var queryParams = String.Empty;

            // add query string parameters
            foreach (var kvp in values)
            {
                if (kvp.Key.Equals(ModelKey) || kvp.Key.Equals(ControllerKey) || kvp.Key.Equals(ActionKey))
                {
                    continue;
                }
                queryParams = queryParams.AddQueryParam(kvp.Key, kvp.Value.ToString());
            }
            vpd.VirtualPath += queryParams;

            return(vpd);
        }