码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET Route学习笔记(1)

时间:2015-03-30 20:22:36      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

注:本文很多部分知识来自于蒋金楠老师的<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} 

 

ASP.NET Route学习笔记(1)

标签:

原文地址:http://www.cnblogs.com/changfutao/p/4378741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!