摘要:ASP.NET的路由

原文: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}");

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

 

posted @ 2013-09-13 18:00  Relict  阅读(1312)  评论(0编辑  收藏  举报