前面我们已经提到过,ASP.NET 的路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径的匹配实现请求地址和物理地址的分离;另一个则是通过注册的路由规测生成一个相应的URL。后者通过调用RouteCollection类型的GetVirtualPath方法来实现。[源代码从这里下载]

如下面的代码片断所示,GetVirtualPath定义了两个GetVirtualPath方法重载,它们共同的参数requestContext和values分别表示请求上下文(RouteData和HTTP上下文的封装)和用于替换定义在URL模板中的变量站位符的值。另一个GetVirtualPath方法具有一个额外的字符串参数name,它表示集合中具体使用的路由对象的注册名称(调用MapPageRoute方法时指定的第一个参数)。而AppendTrailingSlash和LowercaseUrls决定在对生成的URL进行规范化的时候是否添加一个“/”字符(如果没有),以及是否需要将URL转化为小写。

class RouteCollection : Collection<RouteBase>
   2: {    
//其他成员
public VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values);
string name, RouteValueDictionary values);
   6:          
bool AppendTrailingSlash {  get;  set; }
bool LowercaseUrls {  get;  set; } 
   9: }

相关文章: