3VirtualPathDath
介绍完GetRouteData方法的返回类型RouteData之后,我们接着介绍一下RouteBase的GetVirtualPath方法的返回类型VirtualPathData。当RouteBase的GetVirtualPath方法被执行的时候,如果定义在路由模板中的变量与指定变量列表相匹配,它会使用指定的路由变量值去替换路由模板中对应的占位符并生成一个虚拟路径。生成的虚拟路径与Route对象最终被封装成一个VirtualPathData对象作为返回值,他们对应着这个返回的VirtualPathData对象的VirtualPath和Route属性。VirtualPathData的DataTokens属性和RouteData的同名属性一样都是来源于附加到Route对象的自定义变量集合。
public class VirtualPathData
{
public VirtualPathData(RouteBase route, string virtualPath);
public RouteValueDictionary DataTokens { get; }
public RouteBase Route { set; get; }
public string VirtualPath { set; get; }
}
RouteBase的GetVirtualPath方法具有一个类型为RequestContext的参数,一个RequestContext对象表示针对某个请求的上下文。从如下的代码片段中不难看出它实际上是对HTTP上下文和RouteData的封装。
public class RequestContext
{
public RequestContext(HttpContextBase httpContext,RouteData routeData);
public RequestContext();
public virtual HttpContextBase HttpContext { set; get; }
public virtual RouteData RouteData { set; get; }
}