- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5讲:MVCRoute和urls
2010.9.5 苏鹏
内容介绍
-Url和Routes介绍
-Routes匹配URL的工作方式
-使用Routes
?
预备知识
-安装Visual Studio 2010 Express
-了解ASP.Net
-了解设计模式基本概念
?
关于Urls
-ducts.list.aspx?id=123catid=33723page=3(糟糕的Url)
?
URL的六个要求:
1.域名好记好拼写
2.URL尽量短(使用位置代替参数的变量名)
3.URL好输入(最好不要输入特殊字符,如)
4.URL可以体现网站的结构(逻辑结构)
5.URL规律性强,用户可以自行猜测构造(尽量让机器爬虫能猜到,这样网站访问量才大)
6.URL固定,并持久不变
?
URL,U代表Uniform统一的,R代表Resource资源,L代表定位Locator,总体来说就是表示统一资源定位。在ASP.Net MVC中,URL绝不只是意味着映射到一个文件,通常意味着映射到一个类或一个方法。
?
ASP.Net MVC Routing介绍
-接受用户输入并指向Controller的Action
-把Controller的Action输出成URLs
?
Routing与URLRewriting技术的比较
这两种技术都用来实现把路径与物理文件分离,并且都用于形成逻辑清晰,便于SEO理解的优美的URL。
这两种技术最主要的区别是,Rewriting技术最终还是要把页面转发。URL虽然是重写了,但是它最终还是要写回当年的样子。也就是:
一开始可能看见的是
- /product/bolts.aspx
但最后实际上请求的路径还是
- /product/display.aspx?productid=123
但Routing不会,Routing从根本上解决了这个问题。它不会重写URL。
另外一点是Rewriting是单向的。给一个bolts.aspx,它能够拆开分析,但如果要它从后台代码生成一个新的URL,是没有这个能力的。因为Rewriting只管响应Request,匹配URL,把它转义。它没有从后台机制上,把一个Controller和Action拼凑成URL放到前台表示层的能力。而Routing技术还能生成URL,通过Controller和Action的名字生成URL,这是Rewriting做不到的。所以Routing有点像Rewriting的双向2.0版本。
?
定义Routes
-Route URLs
?
每个ASP.Net MVC都至少有一个默认的Routes来实现应用程序。当它们遇到请求的时候,它就知道去找哪个Controller和Action,如果应用程序结构比较复杂, 我们需要在Routes里实现多条路由信息。Routes存放在RoutesCollection对象的RoutesTable.Routes的集合中,所以Routes是一开始写好的一种解析的方式,这种解析方式被注册到全局变量里。
?
Route URLs
- routes.MapRoute(simple,{first}/{second}/{third});
当用户请求发过来的时候,Routing对象就把请求放到一个RouteValueDictionary的字典类里,URL中的参数都在字典中保存起来。在上面的URL中,会在字典里创建三个键值对,键分别是first、second、third,值会等到具体接收的时候传入储存。这里值value并不是简单的string字符串,而是object。
注:第三种URL不合法
?
- routes.MapRoute(simple,{controller}/{action}/{id});
?
URL的匹配规则
- site/{controller}/{action}/{id}(静态字符串)
匹配的时候一定要给一个明确的划分符号。
?
默认路由
-添加默认匹配路由参数
?
?
?
路由参数默认值需从最后一个参数开始往前写,顺序可以交换,但中间参数不能有遗漏,不然系统不知道该如何匹配路由,下面就是错误的路由
?
关于URL的约束
- /2010/08/23/
- /products/list/food
?
正则表达式约束
?
路由匹配的顺序是按照添加顺序来匹配的,当遇到路由格式一样时,先注册的路由先匹配。
?
命名一个Routes
当我们希望调用某个指定的路由解析时,就需要用到路由的命名。
?
Area
-指定作用域
?
ASP.Net网站大了以后它的分层架构和分文件夹管理是个大问题。我们允许把Models、Controllers、Views都是用区域来划分,所以一个大的工程网站可以划分成许多不同功能的小区域网站,每一个网站都有自己的一套路
文档评论(0)