摘要:ASP.NET的路由
对物理存在文件的路由
在成功注册路由的情况下,如果我们按照传统的方式访问一个物理文件(比如http://localhost:2738/Default.aspx、.css或者.js等),在请求地址满足某个路由的URL模板模式的情况下,我们需要将RouteTable的Routes属性代表的RouteCollection对象的RouteExistingFiles属性设置为True,如:
RouteTable.Routes.RouteExistingFiles = true;
来对物理存在文件进行路由。
1 public class Global : System.Web.HttpApplication 2 { 3 protected void Application_Start(object sender, EventArgs e) 4 { 5 RouteTable.Routes.RouteExistingFiles = true; 6 RouteTable.Routes.Ignore("{filename}.js/{*pathInfo}");
7 var defaults = new RouteValueDictionary { { "areacode", "010" }, { "days", 2 } };
8 var dataToken = new RouteValueDictionary { { "defaultCity", "BeiJing" }, { "defaultDays", 2 } }; 9 RouteTable.Routes.MapPageRoute("default", "{areacode}/{days}", "~/Default.aspx", false, defaults, null, dataToken); 10 } 11 }
但是,假如我页面里面存在js、css等引用就会失效,因为这些文件也存在与物理路径上,同时匹配default路由,所以还要在进行路由注册之前,在Global.asax中调用RouteTable的Routes属性的Ignore方法,如:
RouteTable.Routes.Ignore("{filename}.js/{*pathInfo}");
去忽略掉这些物理存在的文件的路由。