注册路由规则集合

一个 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" }
            );
        }
RegisterRoutes(RouteCollection routes)路由规则的定义和添加

相关文章: