仓酷云
标题:
来一篇关于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>
void
RegisterRoutes(RouteCollectionroutes){routes.MapPageRoute(
"SalesRoute"
,
"SalesReport/{year}"
,
"~/sales.aspx"
);}
MapPageRoute这里利用了三个参数,第一个是给这个Route的定名,第二个是这个URL的映照Pattern,而最初一个就是对应的ASPX页面。除这个最经常使用间接的办法以外,还可使用其重载的别的办法,来个route设置default值,增加各类束缚前提,以下面的这一个
<OLclass=dp-c>
void
RegisterRoutes(RouteCollectionroutes){routes.MapPageRoute(
"SalesRoute"
,
"SalesRoute/{year}"
,
"~/sales.aspx"
,
true
,
new
RouteValueDictionary{{
"year"
,DateTime.Now.Year.ToString()}},
new
RouteValueDictionary{{
"year"
,@
"d{4}"
}});}
比拟于第一个route,这个多了三个参数,第一个为boolean值,前面两个为RouteValueDictionary,个中第一个就指定了一个default值,而最初一个就是一个束缚,经由过程正则表达式束缚了参数year必需是四位的数字。
在将SalesRoute/2009乐成的映照到sales.aspx页面以后,怎样在sales的code中猎取这个“2009"值呢?经由过程Page类的RouteData来猎取
<OLclass=dp-c>
protected
void
Page_Load(
object
sender,EventArgse){
string
year=RouteData.Values[
"year"
]
as
string
;}
利用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