在这里我们将体验下ASP.NET 4中的URL Routing功能,希望本文能对价了解URL Routing有所帮助。
本文将从URL Routing的概念开端讲起,一起介绍ASP.NET 4.0中关于URL Routing的功用问题。期望本文能对咱们有所协助。
什么是URL Routing
首要,URL Routing其实在ASP.NET 5 SP1中就被引入了,可是介于之前一向没有用到,何况微软的许多关于ASP.NET 4的介绍都把这作为一新的功用,因而就把标题取为这个吧。
之前,一个典型的ASP.NET的URL一般如下http://www.myexample.com/salesreport.aspx?year=2009
在这个URL中的salesreport.aspx代表的是一个实在存在的物理文件,后缀.aspx在URL中的存在不只彻底没有意义,并且使得这个url不是SEO-friendly的。而运用URL Routing之后,咱们就可运用如下更简练明了的地址来访问了,http://www.myexample.com/salesrepot/2009
运用Route Engine进行URL Mapping
在asp.net mvc中,经过MapRoute将url映射到相应的controller和action, 而在web form中,在Global.assx的Application_Start中,咱们经过MapPageRoute来将url映射到一个页面上
- voidRegisterRoutes(RouteCollectionroutes)
- {
- routes.MapPageRoute("SalesRoute","SalesReport/{year}","~/sales.aspx");
- }
MapPageRoute这儿运用了三个参数,***个是给这个Route的命名,第二个是这个URL的映射Pattern, 而***一个便是对应的ASPX页面。除了这个最常用直接的办法之外,还能够运用其重载的其它办法,来个route设置default值,增加各种束缚条件,如下面的这一个
- 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来获取
- protectedvoidPage_Load(objectsender,EventArgse)
- {
- stringyear=RouteData.Values["year"]asstring;
- }
运用Routing Engine生成URL
除了解析URL之外,咱们一起能够生成这些简练明了的URL, 如下面的代码
- 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来完成页面的回发。
总结
尽管这个重生增加Route功用并不能使Asp.Net Web Form变得像Asp.Net MVC那样让人心动,不过这至少是一个不错的功用。
原文标题:体会ASP.NET 4之URL Routing
链接:http://www.cnblogs.com/jun1st/archive/2009/10/25/aspnet_urlrouting.html
【修改引荐】
- 半途封闭ASP.NET是否影响服务器端履行
- 封闭浏览器Session1分钟失效ASP.NET的BUG
- 概述ASP.NET页面结构
- 描绘ASP.NET页面表单
- ASP.NET 页面目标模型
知优网 » 详解ASP.NET 4中的URL Routing功用