欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

7.ASP.NET MVC 5.0中的Routing【路由】

程序员文章站 2023-11-09 18:57:16
大家好,这一篇向大家介绍ASP.NET MVC路由机制。【PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers【HTML帮助类】 】 路由是一个模式匹配系统,它确保你能够将浏览器的请求,传递到控制器特定的Action方法上。路由引擎使用路由表,来将浏览器发送来的请求UR ......

       大家好,这一篇向大家介绍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错误。

7.ASP.NET MVC 5.0中的Routing【路由】

 

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

7.ASP.NET MVC 5.0中的Routing【路由】

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

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

7.ASP.NET MVC 5.0中的Routing【路由】

 

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

7.ASP.NET MVC 5.0中的Routing【路由】

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

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

 

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

7.ASP.NET MVC 5.0中的Routing【路由】

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

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

7.ASP.NET MVC 5.0中的Routing【路由】

 

 

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

7.ASP.NET MVC 5.0中的Routing【路由】

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

7.ASP.NET MVC 5.0中的Routing【路由】

 

 运行项目:

7.ASP.NET MVC 5.0中的Routing【路由】

 

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

7.ASP.NET MVC 5.0中的Routing【路由】

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

  7.ASP.NET MVC 5.0中的Routing【路由】

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

7.ASP.NET MVC 5.0中的Routing【路由】

 

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