首页 / 网页编程 / ASP.NET / ASP.NET Web Forms 4.0中双向Routing支持
        
            ASP.NET Web Forms 4.0中双向Routing支持2011-10-14 InfoQ 赵劼.NET Framework 3.5 SP1已经包含了ASP.NET Routing引擎。现在微软已经在ASP.NET WebForms 4.0中 增加了对Routing引擎更好的支持,它使用表达式构造器进行双向Routing。Channel 9刚发布了一个10-4的新视频,展示如何在ASP.NET 4.0中使用这个新功能。下面是视频中展示的一段代码。他们使用了一个经典示例,展示如何将Product.aspx? category=Jerseys映射至Product/Jerseys。在使用ASP.NET Routing引擎时,我们可以在 Application_Start中向RouteTable添加这样的映射:RouteTable.Routes.Add("Product",
  new Route("Product/{name}", 
  new  PageRouteHandler("~/Product.aspx")));目前为了得到双向的Routing支持,用户必须对Query String进行URL重写。不过,使用ASP.NET 4.0时 ,用户可以注册如下的表达式构造器(expression builder):<system.web>
 <compilation>
  <expressionBuilders  ...>
   <add expressionPrefix="RouteUrl"
       type="System.Web.Compilation.RouteUrlExpressionBuilder" />
   <add  expressionPrefix="RouteValue"
       type="System.Web.Compilation.RouteValueExpressionBuilder" />
   </expressionBuilders>
 </compilation>
</system.web>第一个表达式用于生成URL而第二个用于获取Route值。在aspx页面中可以使用$符号来访问表达式:<asp:HyperLink NavigationUrl="<%$ RouteUrl:RouteName=Product,  name=Jerseys"
   Text="Jerseys"
   runat="server" />如果要获取name属性中的值,用户可以使用Route对象而不是Request对象:RouteData.Values["name"];或使用表达式构造器:<%$ RouteValue:name %>用户可以利用ASP.NET Routing引擎和新的双向支持将URL和物理上的Web Form解耦,以便支持对搜索 引擎更友好的URL。