|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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那样让民气动,不外这最少是一个不错的中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。 |
|