第9章 路由(Route)
来源:互联网 发布:new event js 位置 编辑:程序博客网 时间:2024/06/01 08:58
将URl映射到控制器上的操作方法.
路由只是解析输入请求、并填充存储在当前RequestContext(请求上下文)中的一个RouteData实例。
一、 统一资源定位符——URL
二、 路由概述
1 、对比路由和URL重写路由:匹配传入URL用到的映射规则,生成URL,映射到资源.
URL重写:把旧URL映射到新的URL
2 、路由方法
3 、定义特性路由
ASP.NET MVC5中新增的。
(1)、路由URL
Global.asax.cs文件中Application_Start方法中调用了RegisterRoutes方法。
这个方法是集中控制路由的方法,包含在~/App_Start/RouteConfig.cs文件中。
修改:
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { //启用特性路由 routes.MapMvcAttributeRoutes(); } }路由的核心工作是将一个请求映射到一个操作。
//首页通过/,/home和/home/index [Route("")] [Route("home")] [Route("home/index")] public ActionResult Index() { return View(); } //URL为/about的请求 [Route("about")] public ActionResult About() { return View(); }
(2)、路由值
//URL为/person/1的请求 [Route("person/{id}")] public ActionResult Details(int id) { return View(); } [Route("{year}/{month}/{day}")] public ActionResult Index(string year,string month,string day) { return View(); }
(3)、控制器路由
public class HomeController : Controller { [Route("home/index")] public ActionResult Index() { return View(); } [Route("home/about")] public ActionResult About() { return View(); } }在控制器类上定义路由时,可以使用一个叫做action的特殊路由参数,它可以作为任意操作名称的占位符。
[Remote("home/{action}")] public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult About() { return View(); } }
重写默认路由
[Remote("home/{action}")] public class HomeController : Controller { //操作方法级别的路由特性,会覆盖控制器级别路由特性 [Remote("home")] [Remote("home/index")] public ActionResult Index() { return View(); } public ActionResult About() { return View(); } }(4)路由约束
路由约束可以让你指定参数的类型以及范围等,格式为:{参数:约束},举例如下:
// 匹配: /users/5
[Route("users/{id:int}"]
// 这里约束了参数“id”必须为整数类型
public ActionResult GetUserById(int id) { ... }
下面是支持的路由约束列表:
alpha,必须为大小写字母(a-z,A-Z),如:{x:alpha};
bool,必须为布尔值,如:{x:bool}
datetime,必须为DateTime(时间和日期)类型,如:{x:datetime}
decimal,必须为decimal类型,如:{x:decimal}
double,必须为64bit浮点数,如:{x:double}
float,必须为32bit浮点数,如:{x:float}
guid,必须为GUID,如:{x:guid}
int,必须为32bit整数,如:{x:int}
length,字符串长度必须为指定值或者在指定范围内,如:{x:length(6)} {x:length(1,20)}
long,必须为64bit整数,如:{x:long}
max,小于等于指定值的整数,如:{x:max(10)}
maxlength,字符串长度小于等于指定值,如:{x:maxlength(10)}
min,大于等于指定值的整数整数,如:{x:min(10)}
minlength,字符串长度大于等于指定值,如:{x:minlength(10)}
range,必须是给定范围内的整数,如:{x:range(10,50)}
regex,必须与正则表达式匹配,如:{x:(^\d{3}-\d{3}-\d{4}$)}
你可以在一个参数后面应用多个约束,用冒号分隔它们,如下:
// 匹配: /users/5
// 但是不匹配 /users/10000000000 因为id的值已经超过了int.MaxValue,
// 也不匹配 /users/0 因为后面有个min(1)约束,id 的值必须大于等于 1.
[Route("users/{id:int:min(1)}")]
public ActionResult GetUserById(int id) { ... }
值得注意的是加在可选参数上的约束,例如:
// 匹配: /greetings/bye
// 也匹配 /greetings 因为message是可选参数,
// 但是不匹配 /greetings/see-you-tomorrow 因为有maxlength(3)约束.
[Route("greetings/{message:maxlength(3)?}")]
public ActionResult Greet(string message) { ... }
4 、定义传统路由
深入理解ASP.NET MVC(1)
ASP.NET MVC 请求流程:Route
5 、选择特性路由还是传统路由6 、路由命名
7 、MVC区域
8 、catch-all参数
9 、段中的多个路由参数
10 、StopRoutingHandler和IgnoreRoute
11 、路由的调试
三、 揭秘路由如何生成URL
1 、URL生成的高层次概述
2 、URL生成详解
3 、外界路由值
4 、Route类生成URL的若干示例
四、 揭秘路由如何绑定到操作
1 、高层次请求的路由管道
2、 路由数据
五、 自定义路由约束
六、 Web Forms和路由机制
七、 小结
- 第9章 路由(Route)
- route 路由
- route路由
- linux 路由 route命令
- linux 路由route
- 路由修改route
- 路由修改 route
- IP-route管理路由
- linux路由route配置
- 路由映射Route
- route设置路由
- linux route路由
- angularJs-route路由详解
- AngularJS $route路由
- angularJS 路由 ng-route
- YII2路由(Route)
- MVC-路由route
- Flask 路由 route
- 庆祝新的AM335x板子PCB Layout完工
- 房地产税将结束房地产黄金期,中产阶级将赢得未来
- 在Maven仓库中添加Oracle JDBC驱动
- linux常用命令大全1
- 统计学习方法---感知机算法拓展(神经网络)
- 第9章 路由(Route)
- [列表]Tesla.Angela写的一些与WINDOWS底层编程相关的PoC
- ChemStat.v6.1地下水+EnviroINSITE.v5.1.0
- eclipse git 提交失败
- PAT Huffman Codes 哈弗曼树,C语言实现
- Android | AppCompatActivity
- JavaScript声明一个对象的三种方式
- IIS和Tomcat共用80端口后撤回,用Tomcat使用80端口
- 《android在活动中使用menu》有感