在这里我们将体验下ASP.NET 4中的URL Routing功能,希望本文能对价了解URL Routing有所帮助。

本文将从URL Routing的概念开端讲起,一起介绍ASP.NET 4.0中关于URL Routing的功用问题。期望本文能对咱们有所协助。

详解ASP.NET 4中的URL Routing功用  URL Routing 第1张

什么是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映射到一个页面上

  1. voidRegisterRoutes(RouteCollectionroutes)
  2. {
  3. routes.MapPageRoute("SalesRoute","SalesReport/{year}","~/sales.aspx");
  4. }

MapPageRoute这儿运用了三个参数,***个是给这个Route的命名,第二个是这个URL的映射Pattern, 而***一个便是对应的ASPX页面。除了这个最常用直接的办法之外,还能够运用其重载的其它办法,来个route设置default值,增加各种束缚条件,如下面的这一个

  1. voidRegisterRoutes(RouteCollectionroutes)
  2. {
  3. routes.MapPageRoute("SalesRoute",
  4. "SalesRoute/{year}",
  5. "~/sales.aspx",true,
  6. newRouteValueDictionary{
  7. {"year",DateTime.Now.Year.ToString()}},
  8. newRouteValueDictionary{
  9. {"year",@"\d{4}"}});
  10. }

比较于***个route,这个多了三个参数,***个为boolean值,后边两个为RouteValueDictionary, 其间***个就指定了一个default值,而***一个便是一个束缚,经过正则表达式束缚了参数year有必要是四位的数字。

在将SalesRoute/2009成功的映射到sales.aspx页面之后,如安在sales的code中获取这个“2009"值呢?经过Page类的RouteData来获取

  1. protectedvoidPage_Load(objectsender,EventArgse)
  2. {
  3. stringyear=RouteData.Values["year"]asstring;
  4. }

运用Routing Engine生成URL

除了解析URL之外,咱们一起能够生成这些简练明了的URL, 如下面的代码

  1. RouteValueDictionaryparameters=newRouteValueDictionary
  2. {
  3. {"year","2008"},
  4. {"category","recreation"}
  5. };
  6. VirtualPathDatavpd=RouteTable.Routes.GetVirtualPath(null,"SalesRoute",parameters);
  7. 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

【修改引荐】

  1. 半途封闭ASP.NET是否影响服务器端履行
  2. 封闭浏览器Session1分钟失效ASP.NET的BUG
  3. 概述ASP.NET页面结构
  4. 描绘ASP.NET页面表单
  5. ASP.NET 页面目标模型
转载请说明出处
知优网 » 详解ASP.NET 4中的URL Routing功用

发表评论

您需要后才能发表评论