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