仓酷云

标题: 来一篇关于NET的详解ASP.NET 4中的URL Routing功效 [打印本页]

作者: 海妖    时间: 2015-1-16 14:25
标题: 来一篇关于NET的详解ASP.NET 4中的URL Routing功能
因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似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
逐步缩小出错代码段的范围,最终确定错误代码的位置。
作者: 简单生活    时间: 2015-1-24 12:38
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
作者: 小妖女    时间: 2015-2-1 14:51
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
作者: 老尸    时间: 2015-2-7 07:26
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
作者: 第二个灵魂    时间: 2015-2-21 02:38
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
作者: 爱飞    时间: 2015-3-6 19:49
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
作者: 山那边是海    时间: 2015-3-13 08:09
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
作者: 精灵巫婆    时间: 2015-3-20 17:50
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2