ASP.NET Route学习笔记(1)

注:本文很多部分知识来自于蒋金楠老师的<ASP.NET MVC框架解密>,本人写纯粹是用作个人笔记,假如侵犯了您的权益,请联系我,我立刻删除

 

在ASP.NET MVC中URL路由通过对请求的URL进行解析,得到以Controller和Action名称为核心的路由数据。但是URL路由系统并不是专属于ASP.NET MVC的,而是直接建立在ASP.NET上,在System.Web.Routing 命名空间下,所以WebForm也可以使用路由对请求地址与物理文件的分离。

好的Url应该满足如下条件:

  1. URL应为获取某种资源提供信息,不一定是物理文件路径
  2. 简短易于记忆和拼写输入
  3. 可以反映出站点结构
  4. 应该是【可拆分】,用户移除末尾,进而获取公告层次信息
  5. 持久、不应改变

当一个请求Url过来的时候,首先

技术分享

去App_Start文件夹的RouteConfig.cs里面,静态方法RegisterRoutes,有routes.MapRoute方法

技术分享

这些方法就是一条条路由规则,你的请求url进来的话,会到这些路由规则从上向下匹配,直到匹配到合适的路由为止。

 

下面我们解析一下这些路由规则

routes.MapRoute(
name: "Default5",    //这个是路由规则的名字
url: "{controller}/{action}/{id}",   //带参数的URL  
defaults: new { controller = "Test", action = "TestIndex",id=UrlParameter.Optional}  //该路由参数的默认值(假如你在地址栏只输出http://localhost:/,那么会自动访问这个默认的控制器Test下面的TestIndex方法,如:http://localhost/Test/TestIndex,然而id是UrlParameter.Optional表示为可选的参数即可有可无)
);

除了我们一般惯例的 http://localhost/Test/TestIndex/1这个URL格式,我们还可以利用路由进行修改变成 http://localhost/Test-TestIndex-1

routes.MapRoute(
name: "Default5",    //这个是路由规则的名字
url: "{controller}-{action}-{id}",   //带参数的URL  
defaults: new { controller = "Test", action = "TestIndex",id=UrlParameter.Optional} //但是除了用"/"这个id是可选的,如果使用"-",则id必须填写

我们还可以在{controller}控制器前面加一个常量例如:admin

routes.MapRoute(
name: "Default5",    //这个是路由规则的名字
url: "admin/{controller}/{action}/{id}",   //带参数的URL  
defaults: new { controller = "Test", action = "TestIndex",id=UrlParameter.Optional} 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。