Mvc注册路由的方式;

必须在任何请求之前添加路由,所以添加路由的唯一路径就是Global.asax文件的Application_Start事件内部

public static void RegisterRoutes(RouteCollection routes)

        {

           

 Route bolg = new Route(

                "blog/arch/{year}/{month}/{day}",

                new MvcRouteHandler()

                );

 routes.Add(blog);

       }

 protected void Application_Start()

        {

            RegisterRoutes(RouteTable.Routes);

        }

 

备注:向集合中添加一个路由是,还可以指定一个名称,在控制器内部或者当前创建指向特定路由的链接时,可以通过路由的友好名称引用路由。

routes.Add("blog",blog);

只要你愿意,可以添加任何数量的路由,当一个请求到达应用程序是,路由的引擎将遍历所有已注册的路由,检查请求的url是否和url模式匹配,然后在根据指定约束检查url参数是否有效。一旦路由引擎找到一个匹配的路由,就会停止遍历,为此,路由的注册顺序非常重要。

所有路由都是RouteCollection实例,RouteCollection有两个属性

StopRoutingHandler:特殊的处理程序。用于路由引擎停止处理,并让默认程序完成其工作,该属性经常用于资源文件(.axd)或web服务(.asmx)

示例:

 routes.Add(new Route(

                "{resource}.axd/{*pathInfo}",new StopRoutingHandler()

                ));

RouteExistingFiles:

如果在请求是该属性设置为true,则指示路由引擎处理请求也处理对已存在文件的请求,否则,将有已存在的asp.net页面直接处理请求,该属性默认是false,

如果设置成true,路由引擎就会处理图像,样式表,javascript文件。

路由辅助方法:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

等价于

  routes.Add(new Route(

                "{resource}.axd/{*pathInfo}",new StopRoutingHandler()

            ));

 routes.MapRoute(

                "blog",

                "blog/{year}/{month}/{day}",

                 new

                 {

                     year = "2011",

                     month = "11",

                     day = "0"

                 },

                 new

                 {

                     year = @"\d{2}|\d{4}",

                     month = @"\d{1,2}",

                     day = @"\d{1,2}",

                 }

                 );

调试路由:

 protected void Application_Start()

        {

            RouteTable.Routes.RouteExistingFiles = true;

            RegisterRoutes(RouteTable.Routes);

                 RouteDebug.RouteDebugger.RewriteRoutesForTestiing(RouteTable.Routees);

        }

这个需要下载插件名称是RouteDebug,并对它引用

原文地址:https://www.cnblogs.com/linsu/p/2413529.html