注册路由规则集合
一个 Web 应用具有一个全局的路由表,该路由表通过 System. Web.Routing.RouteTable
的静态只读属性 Routes 表示,该属性返回一个类型为 System. Web.Routing.RouteCollection
集合
Global.asax是程序的入口,在添加的 Globa l. asax 文件中,我们将路由注册操作定义在 App lication_ Start 方法。
protected void Application_Start() { //注册区域 AreaRegistration.RegisterAllAreas(); //注册筛选器 RegisterGlobalFilters(GlobalFilters.Filters); //注册路由规则 RegisterRoutes(RouteTable.Routes); }
路由规则的定义
路由规则应用层代码
上面RegisterRoutes(RouteTable.Routes);便是注册路由的操作。参数RouteTable.Routes构造了一个路由容器。下列的RegisterRoutes方法是对这个容器添加路由映射机制
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); string url = ConfigurationManager.AppSettings["VirtualPath"] + "{0}" + ConfigurationManager.AppSettings["FileExtension"] ?? ".html"; //分类列表页面 routes.MapRoute("Class", string.Format(url, "class/{show}-{typeid}-{page}-{parid}"), new { controller = "Home", action = "Class", show = "all", typeid = "0", page = "1", parid = "0" }, new { show = "(solute)|(wait)|(noanswer)|(all)|(overdue)", typeid = "\\d+", page = "\\d+" }); //详细页面 routes.MapRoute("Detail", string.Format(url, "detail/{id}"), new { controller = "Home", action = "Detail" }, new { id = "\\d+" }); //首页 routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id}", // 带有参数的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值 ); //错误页面 routes.MapRoute( "Error", "error.shtml", new { controller = "Shared", action = "Error" } ); }