ASP.NET MVC 路由机制

传统的ASP.NET web form 是假想,用户请求的URL和服务器上面的文件之间有某种关联,这里,服务器的工作就是根据接收到的用户请求,检索到对应的文件给用户。这种方式在web form时代很适合,因为ASP.NET页面是aspx页面,并且能够独立的回复用户的浏览器请求。

但是这中方式在MVC中不合适,在MVC中用户请求是通过控制器里面的方法来处理的,在MVC中没有ASP.NET,一对一的文件关联关系;为了解决这个问题,我们要学会MVC路由机制。

路由机制有两个功能:

1.检查收到的URL请求,来判断这个请求是要请求哪个控制器哪个方法的;

2.生成外部URL(用户点击某个链接的时候,会有一个请求,通过视图展现在浏览器上面的URL)

现在我们来开始学MVC路由配置吧:

在MVC 框架中,有两种方式创建路由:

1.基于约定的路由配置

2.特定的路由配置

你可能已经很熟悉了基于约定的路由配置,但是特定的路由配置是MVC5中新增加的。我们在这里都会学习

路由机制不知道,什么是(Controller)控制器,什么是(Actions)方法,它只是提取URL片段,路由的请求处理在后面的处理中,当满足路由配置的时候,才能得到请求的页面;

默认的,路由会匹配拥有正确的片段的URL,例如{controller}/{action},会匹配有两个片段的URL

URL模式是保守的,只会匹配拥有同样的片段的URL,但是URL模式又是包容的,只要URL有正确的片段,就会检查片段的值,但不论值是啥。

路由配置是在RouteConfig.cs文件中的;

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

            );
            routes.MapRoute(
                name: "Student",
                url: "student/{id}",
                defaults: new { controller = "Student", action = "Index"},
                  constraints: new { id = @"\d+" }
); }
RegisterRoutes这个静态方法在Global.asax文件中被调用,程序每次运行的时候,会执行Global文件中的Application_Start()方法,进行路由注册;
  protected void Application_Start()
        {

            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
 

时间: 2024-10-05 03:09:18

ASP.NET MVC 路由机制的相关文章

asp.net MVC 路由机制 Route

1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区别 -->Url重写关注的是将一个Url映射到另一个Url. 路由机制关注的是将Url映射到资源上.资源不一定是一个物理页面,可以是类中的方法. -->Url重写只能用于传入的请求Url 路由机制可以匹配传入的Url,也能够生成一个Url -->Url重写大多是IIS级别的,是IIS的一个组

Asp.net MVC路由机制

C:/Windows/Microsoft.NET/Framwork/v4.0.30319/config/web.config-> httpModules-> System.Web.Routing.UrlRoutingModule-> Init-> application.PostResolveRequestCache+=new EventHandler(this.OnApplicationPostResolveRequestCache); RouteCollectionExtens

MVC路由机制(转)

今天我来缕一下MVC的路由机制,因为使用MVC已经快一年了,之前也只是上手,没有系统去理会.项目完了,结合实际使用,回过头来深入一下. MVC 学习索引(点击即可) 一个请求进入IIS后 传统ASP.NET 路由部分 1.IIS根据文件类型将请求转交给相应的处理程序,如果属于ASP.NET文件,则将请求转发给aspnet_isapi.dll.(注:在II6和IIS7上的处理方式是有区别的) 2. HTTP处理模块UrlRoutingModule接收到请求后,循环调用其RouteCollectio

[Buffalo]ASP.NET MVC路由映射

Asp.Net的路由系统旨在通过注册URl模版与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但对于Asp.Net Mvc应用来说,请求的目标却是定义在某个Controller类型中的Action方法. 为了实现针对目标Controller和Action的路由,Asp.Net Mvc在System.Web.Mvc.RouteCollectionExtensions中针对RouteConllection类型定义了一系列的扩展方法以实现文件路径无关的路由映射.其中的两组方法,Ignore用

ASP.NET MVC - 路由系统

ASP.NET MVC的请求URL不再对应于传统ASP.NET程序的ASPX文件物理地址,而是把请求映射到一个控制器(Controller)类的方法(Action)上,Controller.Action再加上参数构成ASP.Net MVC请求的Url.下面我们来看下路由系统的主要对象. UrlRoutingModule ASP.NET MVC框架的路由实质是从传统ASP.NET管道扩展HttpModule而来,这个模块正是UrlRoutingModule.通过反编译可以看到UrlRoutingM

ASP.NET MVC路由系统的核心对象介绍

众所周知,ASP.NET MVC有一套自己的路由系统.这套路由系统是在原来的ASP.NET 路由系统上扩展过来的.今天这篇文章就来聊聊MVC路由系统中非常关键的一些对象. ASP.NET MVC路由系统主要由以下几个核心对象:         1.RouteCollection(RouteCollextionExtentions)         2.RouteTable         3.RouteData         4.Route:RouteBase         5.URLRou

ASP.NET MVC路由(二)

 ASP.NET MVC路由(二) 前言 在上一篇中,提及了Route.RouteCollection对象的一些信息,以及它们的结构所对应的关系.按照处理流程走下来还有遗留的疑问没有解决这个篇幅就来讲解一下. URL规则的生成 Url规则看名字挺吓唬人的,其实就是根据我们自定义的Url来解析出一个模式,然后等待请求的Url来的时候,跟我们定义的模式进行匹配(如下图).这是后续的内容. 在上篇中说到URL规则的定义是在Route对象中的,下面来讲解在Route对象中怎么根据用户注册的URL转变成U

ASP.NET MVC 路由(四)

ASP.NET MVC 路由(四) 前言 在前面的篇幅中我们讲解路由系统在MVC中的运行过程以及粗略的原理,想必看过前面篇幅的朋友应该对路由有个概念性的了解了,本篇来讲解区域,在读完本篇后不会肯定的让你对区域有彻底的了解,但是会让你在以后对这部分知识掌握的路上夯上厚实的基础. 区域 在路由的起初在按照VS环境新建的MVC项目来讲的,今天区域也是按照这样的套路来讲.MSDN上说,在大型项目使用中被MVC划分为较小单元也就是区域,我没有使用过区域的经验,所以这篇只能讲解它的对象模型以及粗略的原理.

ASP.NET MVC路由(四)

ASP.NET MVC路由(四) 前言 在前面的篇幅中我们讲解路由系统在MVC中的运行过程以及粗略的原理,想必看过前面篇幅的朋友应该对路由有个概念性的了解了,本篇来讲解区域,在读完本篇后不会肯定的让你对区域有彻底的了解,但是会让你在以后对这部分知识掌握的路上夯上厚实的基础. 区域 在路由的起初在按照VS环境新建的MVC项目来讲的,今天区域也是按照这样的套路来讲.MSDN上说,在大型项目使用中被MVC划分为较小单元也就是区域,我没有使用过区域的经验,所以这篇只能讲解它的对象模型以及粗略的原理. (