仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 670|回复: 8
打印 上一主题 下一主题

[学习教程] 来一篇关于NET的详解ASP.NET 4中的URL Routing功效

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:25:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。<p>本文将从URLRouting的观点入手下手讲起,同时先容ASP.NET4.0中关于URLRouting的功效成绩。但愿本文能对人人有所匡助。
甚么是URLRouting
起首,URLrouting实在在ASP.NET5SP1中就被引进了,可是介于之前一向没有效到,何况微软的良多关于ASP.NET4的先容都把这作为一新的功效,因而就把标题取为这个吧。
之前,一个典范的ASP.NET的URL一般以下http://www.myexample.com/salesreport.aspx?year=2009
在这个URL中的salesreport.aspx代表的是一个实在存在的物理文件,后缀.aspx在url中的存在不但完整没成心义,并且使得这个url不是SEO-friendly的。而利用URLRouting以后,我们便可利用以下更简便了然的地点来会见了,http://www.myexample.com/salesrepot/2009
利用RouteEngine举行URLMapping
在asp.netmvc中,经由过程MapRoute将url映照到响应的controller和action,而在webform中,在Global.assx的Application_Start中,我们经由过程MapPageRoute来将url映照到一个页面上
<OLclass=dp-c>voidRegisterRoutes(RouteCollectionroutes){routes.MapPageRoute("SalesRoute","SalesReport/{year}","~/sales.aspx");}
MapPageRoute这里利用了三个参数,第一个是给这个Route的定名,第二个是这个URL的映照Pattern,而最初一个就是对应的ASPX页面。除这个最经常使用间接的办法以外,还可使用其重载的别的办法,来个route设置default值,增加各类束缚前提,以下面的这一个
<OLclass=dp-c>voidRegisterRoutes(RouteCollectionroutes){routes.MapPageRoute("SalesRoute","SalesRoute/{year}","~/sales.aspx",true,newRouteValueDictionary{{"year",DateTime.Now.Year.ToString()}},newRouteValueDictionary{{"year",@"d{4}"}});}
比拟于第一个route,这个多了三个参数,第一个为boolean值,前面两个为RouteValueDictionary,个中第一个就指定了一个default值,而最初一个就是一个束缚,经由过程正则表达式束缚了参数year必需是四位的数字。
在将SalesRoute/2009乐成的映照到sales.aspx页面以后,怎样在sales的code中猎取这个“2009"值呢?经由过程Page类的RouteData来猎取
<OLclass=dp-c>protectedvoidPage_Load(objectsender,EventArgse){stringyear=RouteData.Values["year"]asstring;}
利用RoutingEngine天生URL
除剖析URL以外,我们同时能够天生这些简便了然的URL,以下面的代码
<OLclass=dp-c>RouteValueDictionaryparameters=newRouteValueDictionary{{"year","2008"},{"category","recreation"}};VirtualPathDatavpd=RouteTable.Routes.GetVirtualPath(null,"SalesRoute",parameters);hyperLnk.NavigateUrl=vpd.VirtualPath;
这里的SalesRoute就是我们在Application_Start中注册过的谁人Route。值得注重的是,在SalesRoute的Pattern中,我们并没有”{category}”,那末RouteEngine怎样处置这个值呢?这时候,category就为被作为一个querystring增加到url中,天生的URL将会是如许的:http://www.myexample.com/salesreport/2009?category=recreation
别的,假如在这个sales页面上加一个button,这个button对应的url会不会也会如下面的url那样简便呢?谜底是一定的。可是是经由过程在Form标签中,指定Action来完成页面的回发。
总结
<p>固然这个重生增加Route功效其实不能使Asp.NetWebForm变得像Asp.NetMVC那样让民气动,不外这最少是一个不错的中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-18 14:33:08 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
简单生活 该用户已被删除
板凳
发表于 2015-1-24 12:38:29 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
小妖女 该用户已被删除
地板
发表于 2015-2-1 14:51:23 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
老尸 该用户已被删除
5#
发表于 2015-2-7 07:26:52 | 只看该作者
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
第二个灵魂 该用户已被删除
6#
发表于 2015-2-21 02:38:59 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
爱飞 该用户已被删除
7#
发表于 2015-3-6 19:49:28 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
山那边是海 该用户已被删除
8#
发表于 2015-3-13 08:09:55 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-20 17:50:37 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-2-23 16:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表