MVC 路由

  1、ASP.NET MVC框架中提供的URL路由机制能够使URL不必映射到应用程序的特定物理文件。

  2、当用户访问基于MVC模式创建的网站时,只需要在浏览器地址栏里输入类似于下面的URL:

  http://localhost/HelloWord/hello

  那么ASP.NET MVC框架就自动调用控制器HelloWord行为hello,而行为hello将返回一个特定的视图,或者是将用户重定向到另一个控制器。

  之所以会产生这种现象,完全是由于ASP.NET MVC框架的路由机制在发挥作用。ASP.NET MVC框架利用路由是URLs与控制器和行为对应起来。路由解析包含在URL中的变量,并自动地把变量作为参数传递到控制器的行为。

  3、URL路由与非URL路由的区别

       ①作用不同:URL路由可以用于描述用户行为,而非URL路由只映射到物理文件,不包含任何意义。

       ②URL重写模式不同

       4、URL路由机制

       ①当用户发来请求时,UrlRoutingModule会把这个请求注册在RouteTable中的路由中进行匹配;

       ②如果路由匹配请求,Routing模块将启动IRouteHandler接口;

       ③Routing模块调用IRouteHandler接口的GetHandler方法,这个方法将会返回MvcHandler;

       ④MvcHandler执行IHttpHandler接口,这个接口将负责实例化控制器,从而执行相应的方法以回应请求。

       通过以上处理请求的过程,可以发现在URL路由中,需要事先定义URL路由模式,也就是在RouteTable中定义好路由匹配的模式,ASP.NET MVC框架将完成剩余的工作。

       5、定义路由

       创建一个ASP.NET MVC应用程序后,路由将默认定义在两个地方:第一个地方就是Web.config文件,另一个是Globe.asax文件。

       当一个MVC应用程序首次运行时,会调用Application_Start()方法,此方法随后调用RegisterRoutes()方法创建路由表(RouteTable)。

      路由的添加可以利用类RouteCollection的Add方法和MapRoute方法来完成,使用Add方法添加路由的代码如下:

       public static void RegisterRoutes(RouteCollection routes)

        {

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

            routes.MapRoute(  //使用MapRoute不用新建Route对象

                name: "Default",

                url: "{controller}/{action}/{id}",

                defaults: new { controller = "HelloWorld", action = "Index", id = UrlParameter.Optional }

            );

           routes.Add(new Route  //使用Add方法添加路由需要新建Route对象

                "Category/{action}/{categoryName}"//定义路由方式

                ,new CategoryRouteHandler()//默认路由

            );

        }

原文地址:https://www.cnblogs.com/linhuide/p/5819955.html