public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) { // Try to generate a URL that represents the values passed in based on current // values from the RouteData and new values using the specified Route. BoundUrl result = _parsedRoute.Bind(requestContext.RouteData.Values, values, Defaults, Constraints); if (result == null) { return(null); } // Verify that the route matches the validation rules if (!ProcessConstraints(requestContext.HttpContext, result.Values, RouteDirection.UrlGeneration)) { return(null); } VirtualPathData vpd = new VirtualPathData(this, result.Url); // Add the DataTokens from the Route to the VirtualPathData if (DataTokens != null) { foreach (var prop in DataTokens) { vpd.DataTokens[prop.Key] = prop.Value; } } return(vpd); }
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) { BoundUrl url = this._parsedRoute.Bind(requestContext.RouteData.Values, values, this.Defaults, this.Constraints); if (url == null) { return(null); } if (!this.ProcessConstraints(requestContext.HttpContext, url.Values, RouteDirection.UrlGeneration)) { return(null); } VirtualPathData data = new VirtualPathData(this, url.Url); if (this.DataTokens != null) { foreach (KeyValuePair <string, object> pair in this.DataTokens) { data.DataTokens[pair.Key] = pair.Value; } } return(data); }