MVC路路由规则


使用路由,先引用 "System.Web.Routing",

1、Routing的作用(根据识别出来的数据,将请求传递给Controller和Action)。

   1.1、确定Controller(控制器)。

   1.2、确定Action(方法)。

   1.3、确定其他参数。

 2、理解默认的路由规则。

  在App_Start文件夹中有一个RouteConfig.cs的类,里面有一个默认的路由规则。

     

  当一个MVC应用程序首次运行时,会调用Application_Start()方法,这个方法随后调用了RegisterRoutes()方法。RegisterRoutes()方法创建了路由表。

  默认的路由表包含了一个路由(路由名是Default)、Default路由将Url的第一部分映射到控制器名,Url的第二部分映射到控制器动作,第3部分映射到一个叫id的参数。

  假设在浏览器的地址栏中输入/Home/Index/5,默认地将参数映射成下面的内容:

  Controller = Home

  Action = Index

  id = 5

  当你请求URL /Home/Index/5时,将会执行这行代码:HomeController.Index(5)

  Default路由包含了所有三个参数的默认默认值,如果不提供控制器,那么控制器的参数默认为Home,如果不提供动作,动作参数默认值为Index,如果你不提供id,id参数默认为空字符串。

 

       例子练习1:

     在地址栏中输入域名/Home 

      

      由于Default路由参数的默认值,输入这个Url会调用HomeController控制器中的Index()方法,并使用空字符串作为Id的参数值。

    例子练习2 (不含参数的Index动作):

      地址栏中输入域名/Home

     

    当在浏览器地址栏中输入域名/Home的时候会调用Index这个方法,那么这个id将被忽略。

 

     例子练习3(使用可空参数的Index动作):

    

       Index()方法拥有一个整数参数。因为这个参数是一个可空参数(可以拥有Null值),因此可以调用Index()而不会引发错误。

   

   例子练习4(含有Id参数的Index动作) 

   

     这个时候如果再使用 域名/Home的方式去访问,异常原因是id为null,需要为其赋值。就会报错,异常如下:

          

     正确访问方式是:域名/Home/Index/5

 

3、创建自定义路由。

  

     当在浏览器地址栏中输入 域名/Product/Pro的时候,自定义路由将收到的客户端请求映射到名为Pro的控制器,然后进行匹配,匹配失败后执行默认的参数项,就调用了Pro控制器中的Index方法。

 

4、创建路由约束。

       

     根据上面的图3.1可得出,控制器为Pro的路由默认执行的方法是Details()方法、根据图3.2可看出Pro控制器中有一个Details()方法,里面需要一个int类型的参数。

  当在浏览器地址栏中输入 域名/Pro/2 的时候会自动执行Details中的方法,然后找到Details视图。

     当在浏览器地址栏中输入 域名/Pro/ABC,会出现以下异常信息。

     

  根据路由规则只是想匹配包含合适整数prouctId的Url,在定义路由来限制与路由相匹配的Url时,可以使用约束。修改路由约束为:

     

   这个时候在浏览器地址栏中输入 域名/Product/ABC的时候,不会再抛出图3.3的异常了,这个时候会弹出来一个404的错误。

   

 

 

 

    

 

 

 

 

 

   

 

   

 

  

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM