学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(三)

RouteRouteTable

ASP.NET路由系统的核心是注册的Route对象,一个Route对象对应着一个路由模板,多个具有不同URL模式的Route对象可以注册到同一个Web应用中,他们构成了一个路由表。这个包含所有注册Route对象的路由表通过RouteTable类的静态属性Routes表示,该属性返回一个RouteCollection对象。

1.RouteBase

我们所说的Route泛指的是继承自抽象类RouteBase的某个类型的对象。RouteBase具有两个返回类型分别为RouteDataVirtualPathData的方法GetRouteDataGetVirtualPath,他们分别体现了针对两个“方向”的路由。实现在GetRouteData方法中的路由解析是为了获取路由数据,而GetVirtualPath方法则通过路由解析生成一个完整的虚拟路径。

public abstract class RouteBase
{
public abstract RouteData GetRouteData(HttpContextBase httpContext);
public abstract VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values);
public bool RouteExistingFiles { set; get; }
}


借助路由我们可以采用一个与路径无关的URL来访问某个物理文件。但是如果我们就是希望以物理路径的方式来访问对应的物理物理文件,那该怎么办呢?以前面演示的实例来说,我们注册了一个路由模板为“/employees/{name}/{id}”的Route,但是我们在目录“/employees/hr”下放置了一个名为Default.aspx的页面用于显示HR部门的员工信息。对于这样一个URL/employees/hr/default.aspx,他与注册路由对象的模板是完全匹配的,如果ASP.NET总是对采用次URL的请求实施路由,则意味着我们不能以真实的物理路径来访问这个页面了。

为了解决这个问题,RouteBase定义了一个布尔类型的属性RouteExistingFiles如果 ASP.NET 路由操作处理所有请求(甚至包括与现有文件匹配的请求),则为 true;否则为 false。 默认值为 false。意味着默认情况下在我们的实例中通过地址/employees/hr/default.aspx”是可以访问到Default.aspx页面文件的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值