zoukankan      html  css  js  c++  java
  • 7.ASP.NET MVC 5.0中的Routing【路由】

           大家好,这一篇向大家介绍ASP.NET MVC路由机制。【PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers【HTML帮助类】

    路由是一个模式匹配系统,它确保你能够将浏览器的请求,传递到控制器特定的Action方法上。路由引擎使用路由表,来将浏览器发送来的请求URL和路由表中定义的URL进行匹配。RouteConfig文件用来添加路由规则,路由是调用控制器和Action的方式。

    我们在Global.asax文件中注册路由:通过在Application_Start方法中调用RegisterRoutes方法来注册路由。路由用于创建用户友好的URLs.路由可以设置程序启动页面,就像ASP.NET Web Forms 这样。路由系统能够使我们能够创建任何您想要的url,并以清晰和简洁的方式表达它们。

    下面是路由引擎来执行路由,路由系统根据,用户请求的URL,来匹配路由表。如果找到了,就继续处理,没找到就抛异常。当ASP.NET 路由引擎在运行的时候收到了这个请求,然后就会为请求的URL,在路由表中找到匹配的规则,如果找到了 ,请求就会接着转到相应的控制器中,否则就会报HTTP 404错误。

    下面的图片中,chapters是控制器,speakers是方法,Actions是可选的,这个URL匹配的是Home/Action这个路由规则,其中Action是Home控制器中的方法,还有路由你可以进一步配置一个可选参数ID,用来指向特定的数据。这就是为什么路由引擎知道哪些参数是可选的了。

     现在理论知识了解差不多了,我们来看看怎么给MVC应用程序添加路由,以完成从控制器到Action的映射。我们来创建一个项目,动手实践一下:

    创建一个空模板的MVC应用程序。

     每一个MVC应用程序都默认创建了路由配置文件RouteConfig,里面有默认的实现。我们来看看:

    可以看到RouteConfig类有一个静态的RegisterRoutes方法,这个方法在我们程序启动的时候,从Global.asax文件中进行注册。除此之外,任何带有.axd的请求,就会被IgnoreRoute进行捕捉,而交给程序的其他处理机制进行处理。我们可以这样说,IgnoreRoute用来阻止特殊的路由表,例如Web.Config,图片文件等等。

    MapRoute方法是一个扩展方法,意味着方法已经在路由集合中定义了。代码里面定义了默认的路由规则,默认的路由名称是”Default“,指向的是Home控制器,Index方法,还有一个可选的id参数。

    路由表在Golbal.asax文件中进行注册,当程序启动的时候,Application_Start方法被调用,然后就进行路由注册。

    基本的默认路由配置介绍完了,我们怎么创建自己的路由规则呢?

    首先,我们创建一个Author控制器,然后修改一下里面的代码:

     然后创建AuthorDetail视图,写入下面的代码:

    现在打开RouteConfig文件,创建一个新的路由--【Author】

     运行项目:

      然后再浏览器的URL中输入9:

    现在以QueryString方式,在浏览器中输入:

      

    还可以在方法上标注调用的是哪个路由:

    看这里我们,就创建了一个路由了Author。大家学会了么?

  • 相关阅读:
    Android中通过intent打开浏览器到指定网页
    iOS真机调试
    Autodesk Infrastructure Modeler(AIM)冉冉升起的新星
    IKVM.NET_07_用户指南_IKVM.NET 字节码编译器(ikvmc.exe)
    我们——程序员应该关注,功能?设计?
    系统集成的困境
    系统服务_时间同步服务器
    ASP.NET_ASP.NET 缓存Cache
    IKVM.NET_第五篇_用户指南_安装
    IKVM.NET_第四篇_用户指南_概述
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/10466374.html
Copyright © 2011-2022 走看看