ASP.NET 路由
一. 什么是路由?
一种url(统一资源定位符)的体现方式,将url映射到方法的调用。
转变观念:(url未必是指web服务器上的静态资源文件)。
二. 为什么使用路由?
- 如同规范的代码缩进一样,这是对代码质量的提高,是对url的重视;
- 消除必须使用物理文件映射 url 的弊端;
- 防止注入式攻击,提高安全性。传统的url和磁盘上的内容有着直接对应的关系,通过url就可以确定该站点的目录结构,路由是把请求映射到控制器的操作,较为安全;
- 可以约束url的各个部分。
三. 如何定义路由?
创建一个asp.net mvc项目,打开应用程序文件(global.asax.cs),可以看到在application_start方法中调用了routeconfig.registerroutes方法,该方法就是集中控制路由的地方。
f12转到方法定义,它在/app_start/routeconfig.cs文件中。
一.特性路由
调用mapmvcattributeroutes()方法启用特性路由:
特性路由,顾名思义,通过特性来定义路由。
在controllers中添加一个空的home控制器。
1.为方法添加一个route特性
(url为/index的请求时,就会运行index方法)
(通过 / 、/index 都能访问)
2.路由值(动态路由)
通过花括号创建了一个占位符,如:/index/xiaoming 就会匹配到这个路由。
问题:以下情况下' /index '会匹配那个路由呢?
结论:静>动
3.控制器路由
如果一个方法写一个路由( [route(controlname/actionname)] )的话,就会有重复的代码,这时候就可以在控制器(类)上添加路由特性。
使用特殊路由参数action
(可以通过 /home/index 、/home/about 分别访问index和about方法)
通过=号赋值的方式为路由参数提供默认值
(请求为 /home 时默认请求 index)
通过?号为路由定义可选参数
这时候如果通过/home/1 请求的话会提示404,因为如果url为两段的话它会把 ‘1’匹配到 action 。
4.路由约束
这个时候你请求' /about/2 ' 的时候就会提示请求不明确
通过约束解决
(只用当参数为int值时才会匹配第一个about)
像这样放到路由模板中的约束叫内联约束,还有很多:
二 . 传统路由
回到registerroutes方法,清空代码,添加一个传统路由
controller和action是特殊参数,它们映射到控制器和方法,在传统路由中是必须参数,没有的话会报500的错误,提示不包括所需的“controller”路由值。
传统路由有更灵活的路由语法规则
{controller}/{action}/{id} {controller}-{action}-{id} {controller}-{action}.{id}
...
上面这些都是有效的路由。
maproute的第三个参数由于设置默认值
public static void registerroutes(routecollection routes) { //映射指定的url路由 routes.maproute("simple", "{controller}/{action}/{id}",new { id= urlparameter.optional, //设置id参数为可选参数 action= "index" //设置action参数的默认值为index }); }
maproute的第四个参数由于设置路由值的约束
上一篇: “兔子不吃窝边草”没几个人知道下面一句
下一篇: 辣酱炒茼蒿的做法,带你认识茼蒿
推荐阅读
-
How to debug ASP.NET MVC using source code
-
荣耀路由器设置(荣耀路由价位怎么样)
-
Django-URL路由系统
-
64 位 ASP.Net 已注册 需要 32 位 ASP.Net 才能安装 Microsoft Reporting
-
服务器完美设置,支持asp php cgi jsp asp.net mysql!
-
无线路由的连接方法
-
小米路由器引发的网站建设404页面思考
-
ASP.NET MVC实现功能:通过URL路由实现对多语言的支持
-
Asp.net中用 AJAX调用后台静态的方法总结
-
Intel PRO 2200BG 无线网卡间歇性与无线路由器断开连接问题的原因及处理方法