• 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()//默认路由

                );

            }

  • 相关阅读:
    使用Optioanl优雅的处理空值
    综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
    Nginx 相关介绍
    在Intellij IDEA中使用Debug
    关于Spring的BeanUtils
    MySQL 索引总结
    java中值传递和引用传递
    SQL易错锦集
    Java和SQL取两个字符间的值
    好文章收藏--五分钟理解一致性哈希算法(consistent hashing)
  • 原文地址:https://www.cnblogs.com/linhuide/p/5819955.html
Copyright © 2020-2023  润新知