摘要:ASP.NET的路由

时间:2022-02-12 06:27:24

原文:ASP.NET的路由系统:路由映射

对物理存在文件的路由

在成功注册路由的情况下,如果我们按照传统的方式访问一个物理文件(比如http://localhost:2738/Default.aspx、.css或者.js等),在请求地址满足某个路由的URL模板模式的情况下,我们需要将RouteTable的Routes属性代表的RouteCollection对象的RouteExistingFiles属性设置为True,如:

RouteTable.Routes.RouteExistingFiles = true; 

来对物理存在文件进行路由。

 public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.RouteExistingFiles = true;
RouteTable.Routes.Ignore("{filename}.js/{*pathInfo}");
var defaults = new RouteValueDictionary { { "areacode", "" }, { "days", } }; var dataToken = new RouteValueDictionary { { "defaultCity", "BeiJing" }, { "defaultDays", } };
RouteTable.Routes.MapPageRoute("default", "{areacode}/{days}", "~/Default.aspx", false, defaults, null, dataToken);
}
}

但是,假如我页面里面存在js、css等引用就会失效,因为这些文件也存在与物理路径上,同时匹配default路由,所以还要在进行路由注册之前,在Global.asax中调用RouteTable的Routes属性的Ignore方法,如:

RouteTable.Routes.Ignore("{filename}.js/{*pathInfo}");

去忽略掉这些物理存在的文件的路由。