篇目
介绍
本文介绍了MVC中的路由。如何执行的路线是由路由引擎和如何定义的URL路由。
ASP.NET MVC的路由是一个模式匹配系统,负责传入的浏览器请求映射到指定的MVC控制器操作。当ASP.NET MVC应用程序,然后启动应用程序注册一个或多个模式与框架的路由表来告诉路由引擎做什么用的任何请求匹配这些模式。当路由引擎在运行时,接收到一个请求,请求的URL匹配对注册的URL模式,根据模式匹配,并给出了回应。让我们看看图1.1。
图1.1 ASP.NET MVC的路由
在图1.1中,我们可以看到路由引擎如何处理一个请求和发送响应。它给出了一个根据在路由表中的的URL匹配或不响应。
- 当请求的URL匹配的注册任何路由模式路由表中的路由引擎将请求转发到相应的处理该请求。此后,路由处理,并得到UI上的一个观点。
- 当请求的URL不匹配的注册任何路由模式,然后路由引擎表示,它无法确定如何处理返回404 HTTP状态代码的请求。
路线的性质
ASP.NET MVC航线负责确定控制器方法来执行一个给定的URL。URL由以下属性:
- 路线名称:路由的URL模式映射到一个处理。一个处理程序能够处理请求的MVC应用程序中的一个控制器。可能被用来作为一个特定的参考给定的路由路线名称。
- URL模式: URL模式可以包含文字值和变量占位符(称为URL参数)。位于段的URL的斜线(/)字符分隔的文本和占位符。
当发出请求时,该URL被解析成段和占位符,变量的值,所提供的请求处理程序。这个过程是类似的查询字符串中的数据进行分析,并传递到请求处理程序的方式。在这两种情况下,可变信息被包括在URL并传递到该处理程序中的键 - 值对的形式。在URL查询字符串键和值。对于路由,键是在URL模式中定义的占位符名称,只有值在URL中。
- 默认值:当你定义了一个路线,你可以指定一个参数的默认值。默认是一个对象,它包含的默认路由值。
- 约束条件:一组约束条件申请反对的URL模式更狭义的定义,它匹配的URL。
了解缺省路由
默认的ASP.NET MVC项目模板添加一个通用的路由,使用以下URL惯例打破URL对于一个给定的要求分为三个命名段。
网址:“{controller}/{action}/{id}”
此路由模式是通过调用图路线()扩展方法为RouteCollection注册。
图1.2 MVC应用程序的默认路由
当推出的MVC应用程序的Global.asax 的Application_Start()
事件处理程序 执行的RegisterRoutes()
方法调用 下从RouteConfig
类 App_Start的目录(App_Start / RouteConfig.cs)。的RegisterRoutes()
路由有一个参数是一个集合的路线称为为RouteCollection
包含在应用程序中的所有注册航线。图1.2表示,添加到路由表中的路由默认的方法。
用一个例子的路由
当应用程序启动时,ASP.NET MVC中发现的所有应用程序的控制器通过搜索可用的组件的一类,它实现了System.Web.Mvc
。IController
接口或来自一个类实现这个接口的类名后缀控制器结束。当路由框架使用此列表来确定哪个控制器它可以访问,砍下控制器从整个控制器的类名的后缀。
在前面的文章中使用Repository模式在MVC的CRUD操作, 我实现了一本书上的实体创建,读取,更新和删除操作。因此,我们将使用这个例子就明白了URL路由。我们的默认路由是在图1.2 CRUD应用程序也一样。
网址
调节器
行动
编号
网址 | 调节器 | 行动 | 编号 |
---|---|---|---|
http://localhost:4736/ | HomeController的 | 指数 | |
http://localhost:4736/Book/ | BookController的 | 指数 | |
http://localhost:4736/Book/Create | BookController的 | 创建 | |
http://localhost:4736/Book/Edit/2 | BookController的 | 编辑 | 2 |
表1.1请求的URL匹配我们的默认路由模式
表1.1 的最后一个请求的URL(http://localhost:4736/Book/Edit/2),是一个完美的匹配注册的默认URL模式,因为它满足每一个环节的路由模式,但是,当我们不提供一个完整的请求的URL,然后路由引擎会自动调用控制器每默认路由模式和行动方法。
结论
在路由控制器和动作值不区分大小写。URL路由模式是相对于应用程序的根,所以他们并不需要用一个正斜杠(/)或虚拟的路径代号(〜/)开始。